Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/networking/libiproute/ll_addr.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 17  Line 17 
17  #include "utils.h"  #include "utils.h"
18    
19    
20  const char *ll_addr_n2a(unsigned char *addr, int alen, int type, char *buf, int blen)  const char* FAST_FUNC ll_addr_n2a(unsigned char *addr, int alen, int type, char *buf, int blen)
21  {  {
22   int i;   int i;
23   int l;   int l;
# Line 27  const char *ll_addr_n2a(unsigned char *a Line 27  const char *ll_addr_n2a(unsigned char *a
27   return inet_ntop(AF_INET, addr, buf, blen);   return inet_ntop(AF_INET, addr, buf, blen);
28   }   }
29   l = 0;   l = 0;
30   for (i=0; i<alen; i++) {   for (i = 0; i < alen; i++) {
31   if (i==0) {   if (i == 0) {
32   snprintf(buf+l, blen, ":%02x"+1, addr[i]);   snprintf(buf + l, blen, ":%02x"+1, addr[i]);
33   blen -= 2;   blen -= 2;
34   l += 2;   l += 2;
35   } else {   } else {
36   snprintf(buf+l, blen, ":%02x", addr[i]);   snprintf(buf + l, blen, ":%02x", addr[i]);
37   blen -= 3;   blen -= 3;
38   l += 3;   l += 3;
39   }   }
# Line 41  const char *ll_addr_n2a(unsigned char *a Line 41  const char *ll_addr_n2a(unsigned char *a
41   return buf;   return buf;
42  }  }
43    
44  int ll_addr_a2n(unsigned char *lladdr, int len, char *arg)  int FAST_FUNC ll_addr_a2n(unsigned char *lladdr, int len, char *arg)
45  {  {
46     int i;
47    
48   if (strchr(arg, '.')) {   if (strchr(arg, '.')) {
49   inet_prefix pfx;   inet_prefix pfx;
50   if (get_addr_1(&pfx, arg, AF_INET)) {   if (get_addr_1(&pfx, arg, AF_INET)) {
# Line 54  int ll_addr_a2n(unsigned char *lladdr, i Line 56  int ll_addr_a2n(unsigned char *lladdr, i
56   }   }
57   memcpy(lladdr, pfx.data, 4);   memcpy(lladdr, pfx.data, 4);
58   return 4;   return 4;
59   } else {   }
  int i;  
60    
61   for (i=0; i<len; i++) {   for (i = 0; i < len; i++) {
62   int temp;   int temp;
63   char *cp = strchr(arg, ':');   char *cp = strchr(arg, ':');
64   if (cp) {   if (cp) {
65   *cp = 0;   *cp = 0;
66   cp++;   cp++;
67   }   }
68   if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) {   if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) {
69   bb_error_msg("\"%s\" is invalid lladdr", arg);   bb_error_msg("\"%s\" is invalid lladdr", arg);
70   return -1;   return -1;
71   }   }
72   lladdr[i] = temp;   lladdr[i] = temp;
73   if (!cp) {   if (!cp) {
74   break;   break;
  }  
  arg = cp;  
75   }   }
76   return i+1;   arg = cp;
77   }   }
78     return i+1;
79  }  }

Legend:
Removed from v.983  
changed lines
  Added in v.984