Ordem de envio de dados de “Frame Control Field” de um frame 802.11?

Abaixo está o formato de bit para o campo FC para dados de QoS:

00|01|0001  01000010

Os primeiros 2 bits representam a versão, o próximo tipo de 2 bits, o próximo subtipo de 4 bits, com ToDS = 0, FromDS = 1, Protection bit = 1.

Então, em que ordem os dados acima são enviados através da interface no ar? (ou seja, da esquerda para a direita ou da direita para a esquerda)

Eu vejo o wireshark pegando os dados como "8842"(no último segmento onde mostra os dados brutos do pacote).

Mas, se eu escrever o código a seguir para imprimir dados de campo do FC:

struct mgmt_header_t {
    u_int16_t    fc;          /* 2 bytes */
    u_int16_t    duration;    /* 2 bytes */
    u_int8_t     addr1[6];    /* 6 bytes */  
    u_int8_t     addr2[6];    /* 6 bytes */  
    u_int8_t     addr3[6];    /* 6 bytes */  
    u_int16_t    seq_ctrl;    /* 2 bytes */
};
void my_callback(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
    int radiotapheader_length = (unsigned short int)(*(packet+2));
    struct mgmt_header_t *mac_header = (struct mgmt_header_t *)  (packet+radiotapheader_length);
    printf("FC = %X\n", mac_header->fc);
}

A saída é:

FC = 4288

Então, minha pergunta secundária é: não deveria imprimir8842 ao invés de4288?

Atualizar: Estou atualizando a questão para ser mais claro sobre a minha dúvida.

Digamos que eu queira enviar um pacote de dados de QoS cujo campo FC esteja no formato abaixo:

00|01|0001  01000010

Então, devo escrever:

mac_header->fc = 0x1142 /* value if read from left to right */

Ou

mac_header->fc = 0x4211

Ou

mac_header->fc = 0x4288 /* value if read from right to left */

Ou

mac_header->fc = 0x8842

O meu é uma pequena máquina endian.

questionAnswers(3)

yourAnswerToTheQuestion