diff options
author | rsc <devnull@localhost> | 2005-02-11 16:58:23 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-02-11 16:58:23 +0000 |
commit | b589fce2fbf05ae18a6f015240f87ce2a163521f (patch) | |
tree | 872dbf6e2c6f7be43971b6097f8bb15379e1379e /src/lib9/_p9dialparse.c | |
parent | 26a5fd572556f6d875c18fff8e83ed5eed6cf8fa (diff) | |
download | plan9port-b589fce2fbf05ae18a6f015240f87ce2a163521f.tar.gz plan9port-b589fce2fbf05ae18a6f015240f87ce2a163521f.tar.bz2 plan9port-b589fce2fbf05ae18a6f015240f87ce2a163521f.zip |
hard code list of plan 9 services in case they are not in /etc/services
Diffstat (limited to 'src/lib9/_p9dialparse.c')
-rw-r--r-- | src/lib9/_p9dialparse.c | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/src/lib9/_p9dialparse.c b/src/lib9/_p9dialparse.c index abd8241b..c464e9ff 100644 --- a/src/lib9/_p9dialparse.c +++ b/src/lib9/_p9dialparse.c @@ -10,6 +10,24 @@ static char *nets[] = { "tcp", "udp", nil }; #define CLASS(p) ((*(uchar*)(p))>>6) +static struct { + char *net; + char *service; + int port; +} porttbl[] = { + "tcp", "9fs", 564, + "tcp", "whoami", 565, + "tcp", "guard", 566, + "tcp", "ticket", 567, + "tcp", "exportfs", 17007, + "tcp", "rexexec", 17009, + "tcp", "ncpu", 17010, + "tcp", "cpu", 17013, + "tcp", "venti", 17034, + "tcp", "wiki", 17035, + "tcp", "secstore", 5356, +}; + static int parseip(char *host, u32int *pip) { @@ -103,7 +121,7 @@ p9dialparse(char *addr, char **pnet, char **punix, u32int *phost, int *pport) if(strcmp(net, "unix") == 0) goto Unix; - if(strcmp(net, "tcp")!=0 && strcmp(net, "udp")!=0){ + if(strcmp(net, "tcp")!=0 && strcmp(net, "udp")!=0 && strcmp(net, "net") != 0){ werrstr("bad network %s!%s!%s", net, host, port); return -1; } @@ -129,7 +147,19 @@ p9dialparse(char *addr, char **pnet, char **punix, u32int *phost, int *pport) return 0; } } - werrstr("unknown service %s", port); + } + + for(i=0; i<nelem(porttbl); i++){ + if(strcmp(net, "net") == 0 || strcmp(porttbl[i].net, net) == 0) + if(strcmp(porttbl[i].service, port) == 0){ + *pnet = porttbl[i].net; + *pport = porttbl[i].port; + return 0; + } + } + + if(strcmp(net, "net") == 0){ + werrstr("unknown service net!*!%s", port); return -1; } @@ -149,6 +179,6 @@ p9dialparse(char *addr, char **pnet, char **punix, u32int *phost, int *pport) *pport = ntohs(se->s_port); return 0; } - werrstr("unknown service %s", port); + werrstr("unknown service %s!*!%s", net, port); return -1; } |