utils.c (2d8ad8719591fa803b0d589ed057fa46f49b7155) | utils.c (4940fc889e1e63667a15243028ddcd84d471cd8e) |
---|---|
1/* 2 * Generic address resultion entity 3 * 4 * Authors: 5 * net_random Alan Cox 6 * net_ratelimit Andi Kleen 7 * in{4,6}_pton YOSHIFUJI Hideaki, Copyright (C)2006 USAGI/WIDE Project 8 * --- 282 unchanged lines hidden (view full) --- 291 if (skb->ip_summed == CHECKSUM_COMPLETE && pseudohdr) 292 skb->csum = ~csum_partial(diff, sizeof(diff), 293 ~skb->csum); 294 } else if (pseudohdr) 295 *sum = ~csum_fold(csum_partial(diff, sizeof(diff), 296 csum_unfold(*sum))); 297} 298EXPORT_SYMBOL(inet_proto_csum_replace4); | 1/* 2 * Generic address resultion entity 3 * 4 * Authors: 5 * net_random Alan Cox 6 * net_ratelimit Andi Kleen 7 * in{4,6}_pton YOSHIFUJI Hideaki, Copyright (C)2006 USAGI/WIDE Project 8 * --- 282 unchanged lines hidden (view full) --- 291 if (skb->ip_summed == CHECKSUM_COMPLETE && pseudohdr) 292 skb->csum = ~csum_partial(diff, sizeof(diff), 293 ~skb->csum); 294 } else if (pseudohdr) 295 *sum = ~csum_fold(csum_partial(diff, sizeof(diff), 296 csum_unfold(*sum))); 297} 298EXPORT_SYMBOL(inet_proto_csum_replace4); |
299 300int mac_pton(const char *s, u8 *mac) 301{ 302 int i; 303 304 /* XX:XX:XX:XX:XX:XX */ 305 if (strlen(s) < 3 * ETH_ALEN - 1) 306 return 0; 307 308 /* Don't dirty result unless string is valid MAC. */ 309 for (i = 0; i < ETH_ALEN; i++) { 310 if (!strchr("0123456789abcdefABCDEF", s[i * 3])) 311 return 0; 312 if (!strchr("0123456789abcdefABCDEF", s[i * 3 + 1])) 313 return 0; 314 if (i != ETH_ALEN - 1 && s[i * 3 + 2] != ':') 315 return 0; 316 } 317 for (i = 0; i < ETH_ALEN; i++) { 318 mac[i] = (hex_to_bin(s[i * 3]) << 4) | hex_to_bin(s[i * 3 + 1]); 319 } 320 return 1; 321} 322EXPORT_SYMBOL(mac_pton); |
|