Blame


1 d957951b 2005-02-11 devnull #include <u.h>
2 d957951b 2005-02-11 devnull #include <ctype.h>
3 d957951b 2005-02-11 devnull
4 d957951b 2005-02-11 devnull /*
5 d957951b 2005-02-11 devnull * return ndb attribute type of an ip name
6 d957951b 2005-02-11 devnull */
7 d957951b 2005-02-11 devnull char*
8 d957951b 2005-02-11 devnull ipattr(char *name)
9 d957951b 2005-02-11 devnull {
10 d957951b 2005-02-11 devnull char *p, c;
11 d957951b 2005-02-11 devnull int dot = 0;
12 d957951b 2005-02-11 devnull int alpha = 0;
13 d957951b 2005-02-11 devnull int colon = 0;
14 d957951b 2005-02-11 devnull int hex = 0;
15 d957951b 2005-02-11 devnull
16 d957951b 2005-02-11 devnull for(p = name; *p; p++){
17 d957951b 2005-02-11 devnull c = *p;
18 1c171e3a 2005-07-19 devnull if(isdigit((uchar)c))
19 d957951b 2005-02-11 devnull continue;
20 1c171e3a 2005-07-19 devnull if(isxdigit((uchar)c))
21 d957951b 2005-02-11 devnull hex = 1;
22 1c171e3a 2005-07-19 devnull else if(isalpha((uchar)c) || c == '-')
23 d957951b 2005-02-11 devnull alpha = 1;
24 d957951b 2005-02-11 devnull else if(c == '.')
25 d957951b 2005-02-11 devnull dot = 1;
26 d957951b 2005-02-11 devnull else if(c == ':')
27 d957951b 2005-02-11 devnull colon = 1;
28 d957951b 2005-02-11 devnull else
29 d957951b 2005-02-11 devnull return "sys";
30 d957951b 2005-02-11 devnull }
31 d957951b 2005-02-11 devnull
32 d957951b 2005-02-11 devnull if(alpha){
33 d957951b 2005-02-11 devnull if(dot)
34 d957951b 2005-02-11 devnull return "dom";
35 d957951b 2005-02-11 devnull else
36 d957951b 2005-02-11 devnull return "sys";
37 d957951b 2005-02-11 devnull }
38 d957951b 2005-02-11 devnull
39 d957951b 2005-02-11 devnull if(colon)
40 d957951b 2005-02-11 devnull return "ip"; /* ip v6 */
41 d957951b 2005-02-11 devnull
42 d957951b 2005-02-11 devnull if(dot && !hex)
43 d957951b 2005-02-11 devnull return "ip";
44 d957951b 2005-02-11 devnull else
45 d957951b 2005-02-11 devnull return "sys";
46 d957951b 2005-02-11 devnull }