| /* |
| * This file is part of the UCB release of Plan 9. It is subject to the license |
| * terms in the LICENSE file found in the top-level directory of this |
| * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No |
| * part of the UCB release of Plan 9, including this file, may be copied, |
| * modified, propagated, or distributed except according to the terms contained |
| * in the LICENSE file. |
| */ |
| #include <stdlib.h> |
| |
| #include <stdio.h> |
| #include <parlib/parlib.h> |
| #include <unistd.h> |
| #include <signal.h> |
| #include <fcntl.h> |
| #include <ctype.h> |
| #include <iplib/iplib.h> |
| #include <ndblib/ndb.h> |
| |
| /* |
| * return ndb attribute type of an ip name |
| */ |
| char* |
| ipattr(char *name) |
| { |
| char *p, c; |
| int dot = 0; |
| int alpha = 0; |
| int colon = 0; |
| int hex = 0; |
| |
| for(p = name; *p; p++){ |
| c = *p; |
| if(isdigit(c)) |
| continue; |
| if(isxdigit(c)) |
| hex = 1; |
| else if(isalpha(c) || c == '-') |
| alpha = 1; |
| else if(c == '.') |
| dot = 1; |
| else if(c == ':') |
| colon = 1; |
| else |
| return "sys"; |
| } |
| |
| if(alpha){ |
| if(dot) |
| return "dom"; |
| else |
| return "sys"; |
| } |
| |
| if(colon) |
| return "ip"; /* ip v6 */ |
| |
| if(dot && !hex) |
| return "ip"; |
| else |
| return "sys"; |
| } |