source: libpacketdump/eth_34958.c @ eade363

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

Tidy up thousands of little warnings

  • Property mode set to 100644
File size: 2.7 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(const 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(const 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(const 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(const 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(const 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(const 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 UNUSED,const char *packet,unsigned len)
94{
95        int v;
96        int type;
97        POPBYTE(v);
98        printf(" 802.1x: Version: %u\n",v);
99        POPBYTE(type);
100        printf(" 802.1x: Type: ");
101        switch (type) {
102                case 0:
103                        printf(" EAP-Packet (0)\n"); 
104                        decode_eap(packet,len);
105                        break;
106                case 1: printf(" EAPOL-Start (1)\n"); 
107                        decode_eapol_start(packet,len);
108                        break;
109                case 2:
110                        printf(" EAPOL-Logoff (2)\n"); 
111                        decode_eapol_logoff(packet,len);
112                        break;
113                case 3:
114                        printf(" EAPOL-Key (3)\n");
115                        decode_eapol_key(packet,len);
116                        break;
117                case 4:
118                        printf(" EAPOL-Encasulated-ASF-Alert (4)\n");
119                        decode_eapol_encapsulated_asf_alert(packet,len);
120                        break;
121                default:
122                        printf(" Unknown #0x%02x\n",v);
123                        decode_next(packet,len,"eapol",type);
124                        break;
125        }
126
127        return;
128}
Note: See TracBrowser for help on using the repository browser.