@@ -18,7 +18,7 @@ static unsigned char recv_buf[BUF_LEN];
18
18
19
19
static struct sockaddr_ll addr ;
20
20
21
- void h3c_set_eapol_header (unsigned char type , unsigned short p_len )
21
+ static void h3c_set_eapol_header (unsigned char type , unsigned short p_len )
22
22
{
23
23
struct packet * pkt ;
24
24
pkt = (struct packet * )send_buf ;
@@ -28,7 +28,7 @@ void h3c_set_eapol_header(unsigned char type, unsigned short p_len)
28
28
pkt -> eapol_header .p_len = p_len ;
29
29
}
30
30
31
- void h3c_set_eap_header (unsigned char code , unsigned char id , \
31
+ static void h3c_set_eap_header (unsigned char code , unsigned char id , \
32
32
unsigned short d_len , unsigned char type )
33
33
{
34
34
struct packet * pkt ;
@@ -40,60 +40,7 @@ void h3c_set_eap_header(unsigned char code, unsigned char id, \
40
40
pkt -> eap_header .type = type ;
41
41
}
42
42
43
- int h3c_init (char * _interface , char * _username , char * _password )
44
- {
45
- struct ifreq ifr ;
46
- struct packet * pkt ;
47
- pkt = (struct packet * )send_buf ;
48
-
49
- interface = _interface ;
50
- username = _username ;
51
- password = _password ;
52
-
53
- sockfd = socket (PF_PACKET , SOCK_RAW , htons (ETH_P_PAE ));
54
- if (-1 == sockfd )
55
- return -1 ;
56
-
57
- memcpy (pkt -> eth_header .ether_dhost ,PAE_GROUP_ADDR ,ETH_ALEN );
58
-
59
- strcpy (ifr .ifr_name , interface );
60
- if (-1 == ioctl (sockfd , SIOCGIFHWADDR , & ifr ))
61
- return -1 ;
62
-
63
- memcpy (pkt -> eth_header .ether_shost ,ifr .ifr_hwaddr .sa_data ,ETH_ALEN );
64
-
65
- if (-1 == ioctl (sockfd ,SIOCGIFINDEX ,& ifr ))
66
- return -1 ;
67
-
68
- addr .sll_ifindex = ifr .ifr_ifindex ;
69
-
70
- /*
71
- * use htons when the data is more than 1 byte
72
- */
73
- pkt -> eth_header .ether_type = htons (ETH_P_PAE );
74
-
75
- return 0 ;
76
- }
77
-
78
- int h3c_start ()
79
- {
80
- h3c_set_eapol_header (EAPOL_START , 0 );
81
-
82
- return sendto (sockfd , (void * )send_buf , \
83
- sizeof (struct ether_header )+ sizeof (struct eapol ), 0 , \
84
- (struct sockaddr * )& addr , sizeof (addr ));
85
- }
86
-
87
- int h3c_logoff ()
88
- {
89
- h3c_set_eapol_header (EAPOL_LOGOFF , 0 );
90
-
91
- return sendto (sockfd , (void * )send_buf , \
92
- sizeof (struct ether_header ) + sizeof (struct eapol ), 0 , \
93
- (struct sockaddr * )& addr , sizeof (addr ));
94
- }
95
-
96
- int h3c_send_id (unsigned char packet_id )
43
+ static int h3c_send_id (unsigned char packet_id )
97
44
{
98
45
unsigned short len = htons (sizeof (struct eap ) + \
99
46
sizeof (VERSION_INFO ) + strlen (username ));
@@ -113,7 +60,7 @@ int h3c_send_id(unsigned char packet_id)
113
60
(struct sockaddr * )& addr , sizeof (addr ));
114
61
}
115
62
116
- int h3c_send_md5 (unsigned char packet_id , unsigned char * md5data )
63
+ static int h3c_send_md5 (unsigned char packet_id , unsigned char * md5data )
117
64
{
118
65
unsigned char md5 [MD5_LEN ];
119
66
unsigned short len = htons (sizeof (struct eap ) + 1 + \
@@ -143,8 +90,11 @@ int h3c_send_md5(unsigned char packet_id, unsigned char *md5data)
143
90
(struct sockaddr * )& addr , sizeof (addr ));
144
91
}
145
92
146
- int h3c_send_h3c (unsigned char packet_id )
93
+ static int h3c_send_h3c (unsigned char packet_id )
147
94
{
95
+ /*
96
+ * not called so far
97
+ */
148
98
size_t password_size = strlen (password );
149
99
size_t username_size = strlen (username );
150
100
@@ -169,6 +119,59 @@ int h3c_send_h3c(unsigned char packet_id)
169
119
(struct sockaddr * )& addr , sizeof (addr ));
170
120
}
171
121
122
+ int h3c_init (char * _interface , char * _username , char * _password )
123
+ {
124
+ struct ifreq ifr ;
125
+ struct packet * pkt ;
126
+ pkt = (struct packet * )send_buf ;
127
+
128
+ interface = _interface ;
129
+ username = _username ;
130
+ password = _password ;
131
+
132
+ sockfd = socket (PF_PACKET , SOCK_RAW , htons (ETH_P_PAE ));
133
+ if (-1 == sockfd )
134
+ return -1 ;
135
+
136
+ memcpy (pkt -> eth_header .ether_dhost ,PAE_GROUP_ADDR ,ETH_ALEN );
137
+
138
+ strcpy (ifr .ifr_name , interface );
139
+ if (-1 == ioctl (sockfd , SIOCGIFHWADDR , & ifr ))
140
+ return -1 ;
141
+
142
+ memcpy (pkt -> eth_header .ether_shost ,ifr .ifr_hwaddr .sa_data ,ETH_ALEN );
143
+
144
+ if (-1 == ioctl (sockfd ,SIOCGIFINDEX ,& ifr ))
145
+ return -1 ;
146
+
147
+ addr .sll_ifindex = ifr .ifr_ifindex ;
148
+
149
+ /*
150
+ * use htons when the data is more than 1 byte
151
+ */
152
+ pkt -> eth_header .ether_type = htons (ETH_P_PAE );
153
+
154
+ return 0 ;
155
+ }
156
+
157
+ int h3c_start ()
158
+ {
159
+ h3c_set_eapol_header (EAPOL_START , 0 );
160
+
161
+ return sendto (sockfd , (void * )send_buf , \
162
+ sizeof (struct ether_header )+ sizeof (struct eapol ), 0 , \
163
+ (struct sockaddr * )& addr , sizeof (addr ));
164
+ }
165
+
166
+ int h3c_logoff ()
167
+ {
168
+ h3c_set_eapol_header (EAPOL_LOGOFF , 0 );
169
+
170
+ return sendto (sockfd , (void * )send_buf , \
171
+ sizeof (struct ether_header ) + sizeof (struct eapol ), 0 , \
172
+ (struct sockaddr * )& addr , sizeof (addr ));
173
+ }
174
+
172
175
int h3c_response (int (* success_callback )(), int (* failure_callback )())
173
176
{
174
177
struct packet * pkt ;
@@ -182,12 +185,10 @@ int h3c_response(int (*success_callback)(), int (*failure_callback)())
182
185
return -1 ;
183
186
184
187
if (pkt -> eapol_header .type != EAPOL_EAPPACKET )
185
- {
186
188
/*
187
189
* Got unknown eapol type
188
190
*/
189
191
return 0 ;
190
- }
191
192
192
193
if (pkt -> eap_header .code == EAP_SUCCESS )
193
194
{
@@ -216,25 +217,21 @@ int h3c_response(int (*success_callback)(), int (*failure_callback)())
216
217
* Response according to request type
217
218
*/
218
219
if (pkt -> eap_header .type == EAP_TYPE_ID )
219
- {
220
220
return h3c_send_id (pkt -> eap_header .id );
221
- }
222
221
else if (pkt -> eap_header .type == EAP_TYPE_MD5 )
223
222
{
224
223
unsigned char * md5 ;
225
224
md5 = (unsigned char * )(recv_buf + sizeof (struct packet ) + 1 );
226
225
return h3c_send_md5 (pkt -> eap_header .id , md5 );
227
226
}
228
227
else if (pkt -> eap_header .type == EAP_TYPE_H3C )
229
- {
230
228
return h3c_send_h3c (pkt -> eap_header .id );
231
- }
232
229
}
233
230
else if (pkt -> eap_header .code == EAP_RESPONSE )
234
- {
235
231
/*
236
232
* Got response
237
233
*/
238
- return 0 ;
239
- }
234
+ return 0 ;
235
+
236
+ return 0 ;
240
237
}
0 commit comments