|
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 } |