comparison extensions/app_radgw/radius.c @ 518:2c097ed9d0ea

Fix the dump function
author Sebastien Decugis <sdecugis@nict.go.jp>
date Fri, 27 Aug 2010 11:25:46 +0900
parents 1c2f5ee38039
children 6994e9a3c528
comparison
equal deleted inserted replaced
517:d5383f28b96e 518:2c097ed9d0ea
221 void radius_msg_dump_attr_val(struct radius_attr_hdr *hdr) 221 void radius_msg_dump_attr_val(struct radius_attr_hdr *hdr)
222 { 222 {
223 struct radius_attr_type *attr; 223 struct radius_attr_type *attr;
224 int i, len; 224 int i, len;
225 unsigned char *pos; 225 unsigned char *pos;
226 u8 attrtype;
226 227
227 attr = radius_get_attr_type(hdr->type); 228 attr = radius_get_attr_type(hdr->type);
228 229
229 if (attr == NULL) 230 if (attr == NULL)
230 return; 231 attrtype = RADIUS_ATTR_HEXDUMP;
232 else
233 attrtype = attr->data_type;
231 234
232 len = hdr->length - sizeof(struct radius_attr_hdr); 235 len = hdr->length - sizeof(struct radius_attr_hdr);
233 pos = (unsigned char *) (hdr + 1); 236 pos = (unsigned char *) (hdr + 1);
234 237
235 switch (attr->data_type) { 238 switch (attrtype) {
236 case RADIUS_ATTR_TEXT: 239 case RADIUS_ATTR_TEXT:
237 printf(" Value: '"); 240 printf(" Value: '");
238 for (i = 0; i < len; i++) 241 for (i = 0; i < len; i++)
239 print_char(pos[i]); 242 print_char(pos[i]);
240 printf("'\n"); 243 printf("'\n");
247 printf(" Value: %s\n", inet_ntoa(addr)); 250 printf(" Value: %s\n", inet_ntoa(addr));
248 } else 251 } else
249 printf(" Invalid IP address length %d\n", len); 252 printf(" Invalid IP address length %d\n", len);
250 break; 253 break;
251 254
252 #ifdef CONFIG_IPV6
253 case RADIUS_ATTR_IPV6: 255 case RADIUS_ATTR_IPV6:
254 if (len == 16) { 256 if (len == 16) {
255 char buf[128]; 257 char buf[128];
256 const char *atxt; 258 const char *atxt;
257 struct in6_addr *addr = (struct in6_addr *) pos; 259 struct in6_addr *addr = (struct in6_addr *) pos;
258 atxt = inet_ntop(AF_INET6, addr, buf, sizeof(buf)); 260 atxt = inet_ntop(AF_INET6, addr, buf, sizeof(buf));
259 printf(" Value: %s\n", atxt ? atxt : "?"); 261 printf(" Value: %s\n", atxt ? atxt : "?");
260 } else 262 } else
261 printf(" Invalid IPv6 address length %d\n", len); 263 printf(" Invalid IPv6 address length %d\n", len);
262 break; 264 break;
263 #endif /* CONFIG_IPV6 */
264
265 case RADIUS_ATTR_HEXDUMP:
266 case RADIUS_ATTR_UNDIST:
267 printf(" Value:");
268 for (i = 0; i < len; i++)
269 printf(" %02x", pos[i]);
270 printf("\n");
271 break;
272 265
273 case RADIUS_ATTR_INT32: 266 case RADIUS_ATTR_INT32:
274 if (len == 4) 267 if (len == 4)
275 printf(" Value: %u\n", WPA_GET_BE32(pos)); 268 printf(" Value: %u\n", WPA_GET_BE32(pos));
276 else 269 else
277 printf(" Invalid INT32 length %d\n", len); 270 printf(" Invalid INT32 length %d\n", len);
278 break; 271 break;
279 272
273 case RADIUS_ATTR_HEXDUMP:
274 case RADIUS_ATTR_UNDIST:
280 default: 275 default:
276 printf(" Value:");
277 for (i = 0; i < len; i++)
278 printf(" %02x", pos[i]);
279 printf("\n");
281 break; 280 break;
282 } 281 }
283 } 282 }
284 283
285 static void radius_msg_dump_attr(struct radius_attr_hdr *hdr) 284 static void radius_msg_dump_attr(struct radius_attr_hdr *hdr)
"Welcome to our mercurial repository"