source: libpacketdump/eth_34958.c @ 11a7f9c

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 11a7f9c was 11a7f9c, checked in by Perry Lorier <perry@…>, 12 years ago

Constification

  • Property mode set to 100644
File size: 2.6 KB
Line 
1#include <stdio.h>
2#include "libpacketdump.h"
3
4#define POPBYTE(x)                              \
5                do {                            \
6                        if (len<1) return;      \
7                        x=*(packet++);          \
8                } while(0)                     
9
10#define POPWORD(x)                              \
11                do {                            \
12                        if (len<2) return;      \
13                        x=htons(*(uint16_t*)packet);    \
14                        packet+=2;              \
15                } while(0)
16
17static void decode_eap_request(char *packet, unsigned len)
18{
19        int v;
20        POPBYTE(v);
21        printf(" 802.1x: EAP: Identifier: %u\n",v);
22        POPWORD(v);
23        printf(" 802.1x: EAP: Length: %u\n",v);
24        POPBYTE(v);
25        printf(" 802.1x: EAP: Type: ");
26        switch(v) {
27                case 1: printf(" Identity (1)\n"); break;
28                case 2: printf(" Notification (2)\n"); break;
29                case 3: printf(" NAK (3)\n"); break;
30                case 4: printf(" MD5-Challenge (4)\n"); break;
31                case 5: printf(" One-Time Password (5)\n"); break;
32                case 6: printf(" Generic Token Card (6)\n"); break;
33        }
34}
35
36static void decode_eap(char *packet, unsigned len)
37{
38        int v;
39        POPWORD(v);
40        printf(" 802.1x: Length: %d\n",v);
41        POPBYTE(v);
42        printf(" 802.1x: EAP: ");
43        switch(v) {
44                case 1:
45                        printf("Request (1)\n");
46                        decode_eap_request(packet,len);
47                        break;
48                case 2: printf("Response (2)\n"); break;
49                case 3: printf("Success (3)\n"); break;
50                case 4: printf("Failure (4)\n"); break;
51                default: printf("#0x%02x\n",v); break;
52        }
53       
54}
55
56static void decode_eapol_start(char *packet, unsigned len)
57{
58        int v;
59        POPWORD(v);
60        printf(" 802.1x: Length: %d\n",v);
61}
62
63static void decode_eapol_logoff(char *packet, unsigned len)
64{
65        int v;
66        POPWORD(v);
67        printf(" 802.1x: Length: %d\n",v);
68}
69
70struct key_descriptor {
71                uint8_t descriptor_type;
72                uint16_t key_length;
73                uint64_t replay_counter;
74                uint8_t key_iv[27-12];
75                uint8_t kevy_index;
76                uint8_t key_signature[44-29];
77};
78
79static void decode_eapol_key(char *packet, unsigned len)
80{
81        int v;
82        POPWORD(v);
83        printf(" 802.1x: Length: %d\n",v);
84}
85
86static void decode_eapol_encapsulated_asf_alert(char *packet, unsigned len)
87{
88        int v;
89        POPWORD(v);
90        printf(" 802.1x: Length: %d\n",v);
91}
92
93void decode(int link_type,const char *packet,unsigned len)
94{
95        int offset;
96        int v;
97        int type;
98        POPBYTE(v);
99        printf(" 802.1x: Version: %u\n",v);
100        POPBYTE(type);
101        printf(" 802.1x: Type: ");
102        switch (type) {
103                case 0:
104                        printf(" EAP-Packet (0)\n"); 
105                        decode_eap(packet,len);
106                        break;
107                case 1: printf(" EAPOL-Start (1)\n"); 
108                        decode_eapol_start(packet,len);
109                        break;
110                case 2:
111                        printf(" EAPOL-Logoff (2)\n"); 
112                        decode_eapol_logoff(packet,len);
113                        break;
114                case 3:
115                        printf(" EAPOL-Key (3)\n");
116                        decode_eapol_key(packet,len);
117                        break;
118                case 4:
119                        printf(" EAPOL-Encasulated-ASF-Alert (4)\n");
120                        decode_eapol_encapsulated_asf_alert(packet,len);
121                        break;
122                default:
123                        printf(" Unknown #0x%02x\n",v);
124                        decode_next(packet,len,"eapol",type);
125                        break;
126        }
127
128        return;
129}
Note: See TracBrowser for help on using the repository browser.