13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier #include <ctype.h>
43e12c5d1SDavid du Colombier
53e12c5d1SDavid du Colombier /*
63e12c5d1SDavid du Colombier * make an address, add the defaults
73e12c5d1SDavid du Colombier */
83e12c5d1SDavid du Colombier char *
netmkaddr(char * linear,char * defnet,char * defsrv)93e12c5d1SDavid du Colombier netmkaddr(char *linear, char *defnet, char *defsrv)
103e12c5d1SDavid du Colombier {
11*7dd7cddfSDavid du Colombier static char addr[256];
123e12c5d1SDavid du Colombier char *cp;
133e12c5d1SDavid du Colombier
143e12c5d1SDavid du Colombier /*
153e12c5d1SDavid du Colombier * dump network name
163e12c5d1SDavid du Colombier */
173e12c5d1SDavid du Colombier cp = strchr(linear, '!');
183e12c5d1SDavid du Colombier if(cp == 0){
193e12c5d1SDavid du Colombier if(defnet==0){
203e12c5d1SDavid du Colombier if(defsrv)
21*7dd7cddfSDavid du Colombier snprint(addr, sizeof(addr), "net!%s!%s",
22*7dd7cddfSDavid du Colombier linear, defsrv);
233e12c5d1SDavid du Colombier else
24*7dd7cddfSDavid du Colombier snprint(addr, sizeof(addr), "net!%s", linear);
25*7dd7cddfSDavid du Colombier }
26*7dd7cddfSDavid du Colombier else {
273e12c5d1SDavid du Colombier if(defsrv)
28*7dd7cddfSDavid du Colombier snprint(addr, sizeof(addr), "%s!%s!%s", defnet,
29*7dd7cddfSDavid du Colombier linear, defsrv);
303e12c5d1SDavid du Colombier else
31*7dd7cddfSDavid du Colombier snprint(addr, sizeof(addr), "%s!%s", defnet,
32*7dd7cddfSDavid du Colombier linear);
333e12c5d1SDavid du Colombier }
343e12c5d1SDavid du Colombier return addr;
353e12c5d1SDavid du Colombier }
363e12c5d1SDavid du Colombier
373e12c5d1SDavid du Colombier /*
383e12c5d1SDavid du Colombier * if there is already a service, use it
393e12c5d1SDavid du Colombier */
403e12c5d1SDavid du Colombier cp = strchr(cp+1, '!');
413e12c5d1SDavid du Colombier if(cp)
423e12c5d1SDavid du Colombier return linear;
433e12c5d1SDavid du Colombier
443e12c5d1SDavid du Colombier /*
453e12c5d1SDavid du Colombier * add default service
463e12c5d1SDavid du Colombier */
473e12c5d1SDavid du Colombier if(defsrv == 0)
483e12c5d1SDavid du Colombier return linear;
49*7dd7cddfSDavid du Colombier snprint(addr, sizeof(addr), "%s!%s", linear, defsrv);
503e12c5d1SDavid du Colombier
513e12c5d1SDavid du Colombier return addr;
523e12c5d1SDavid du Colombier }
53