buffer_write_u16_at
buffer_write_u16_at(buffer, buffer->_position, data);
buffer_write_u16_at(packet, rdpos, buffer_position(packet)-rdpos-2);
buffer_write_u16_at(q->packet, rdlength_pos, rdlength);
#define ID_SET(packet, id) (buffer_write_u16_at((packet), 0, (id)))
#define FLAGS_SET(packet, f) (buffer_write_u16_at((packet), 2, (f)))
#define QDCOUNT_SET(packet, c) (buffer_write_u16_at((packet), 4, (c)))
#define ANCOUNT_SET(packet, c) (buffer_write_u16_at((packet), 6, (c)))
#define NSCOUNT_SET(packet, c) (buffer_write_u16_at((packet), 8, (c)))
#define ARCOUNT_SET(packet, c) (buffer_write_u16_at((packet), 10, (c)))
buffer_write_u16_at(packet, rdlength_pos,
buffer_write_u16_at(packet, rdlength_pos, rdlength);