xref: /plan9-contrib/sys/src/libip/parseip.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include <u.h>
2 #include <libc.h>
3 #include "ip.h"
4 
5 int
6 parseip(uchar *to, char *from)
7 {
8 	int i;
9 	char *p;
10 
11 	p = from;
12 	memset(to, 0, 4);
13 	for(i = 0; i < 4 && *p; i++){
14 		to[i] = strtoul(p, &p, 0);
15 		if(*p == '.')
16 			p++;
17 	}
18 
19 	switch(CLASS(to)){
20 	case 0:	/* class A - 1 byte net */
21 	case 1:
22 		if(i == 3){
23 			to[3] = to[2];
24 			to[2] = to[1];
25 			to[1] = 0;
26 		} else if (i == 2){
27 			to[3] = to[1];
28 			to[1] = 0;
29 		}
30 		break;
31 	case 2:	/* class B - 2 byte net */
32 		if(i == 3){
33 			to[3] = to[2];
34 			to[2] = 0;
35 		}
36 		break;
37 	}
38 	return 0;
39 }
40