ip.c
changeset 0 068428edee47
equal deleted inserted replaced
-1:000000000000 0:068428edee47
       
     1 #include "fmt.h"
       
     2 #include "scan.h"
       
     3 #include "ip.h"
       
     4 
       
     5 unsigned int ip_fmt(s,ip)
       
     6 char *s;
       
     7 struct ip_address *ip;
       
     8 {
       
     9   unsigned int len;
       
    10   unsigned int i;
       
    11  
       
    12   len = 0;
       
    13   i = fmt_ulong(s,(unsigned long) ip->d[0]); len += i; if (s) s += i;
       
    14   i = fmt_str(s,"."); len += i; if (s) s += i;
       
    15   i = fmt_ulong(s,(unsigned long) ip->d[1]); len += i; if (s) s += i;
       
    16   i = fmt_str(s,"."); len += i; if (s) s += i;
       
    17   i = fmt_ulong(s,(unsigned long) ip->d[2]); len += i; if (s) s += i;
       
    18   i = fmt_str(s,"."); len += i; if (s) s += i;
       
    19   i = fmt_ulong(s,(unsigned long) ip->d[3]); len += i; if (s) s += i;
       
    20   return len;
       
    21 }
       
    22 
       
    23 unsigned int ip_scan(s,ip)
       
    24 char *s;
       
    25 struct ip_address *ip;
       
    26 {
       
    27   unsigned int i;
       
    28   unsigned int len;
       
    29   unsigned long u;
       
    30  
       
    31   len = 0;
       
    32   i = scan_ulong(s,&u); if (!i) return 0; ip->d[0] = u; s += i; len += i;
       
    33   if (*s != '.') return 0; ++s; ++len;
       
    34   i = scan_ulong(s,&u); if (!i) return 0; ip->d[1] = u; s += i; len += i;
       
    35   if (*s != '.') return 0; ++s; ++len;
       
    36   i = scan_ulong(s,&u); if (!i) return 0; ip->d[2] = u; s += i; len += i;
       
    37   if (*s != '.') return 0; ++s; ++len;
       
    38   i = scan_ulong(s,&u); if (!i) return 0; ip->d[3] = u; s += i; len += i;
       
    39   return len;
       
    40 }
       
    41 
       
    42 unsigned int ip_scanbracket(s,ip)
       
    43 char *s;
       
    44 struct ip_address *ip;
       
    45 {
       
    46   unsigned int len;
       
    47  
       
    48   if (*s != '[') return 0;
       
    49   len = ip_scan(s + 1,ip);
       
    50   if (!len) return 0;
       
    51   if (s[len + 1] != ']') return 0;
       
    52   return len + 2;
       
    53 }