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);