1 #include <stdlib.h> 2 #include <sys/types.h> 3 #include <string.h> 4 #include <fcntl.h> 5 #include <stdio.h> 6 #include <unistd.h> 7 #include <libnet.h> 8 9 /* 10 * make an address, add the defaults 11 */ 12 char * 13 netmkaddr(char *linear, char *defnet, char *defsrv) 14 { 15 static char addr[256]; 16 char *cp; 17 18 /* 19 * dump network name 20 */ 21 cp = strchr(linear, '!'); 22 if(cp == 0){ 23 if(defnet==0){ 24 if(defsrv) 25 snprintf(addr, sizeof(addr), "net!%s!%s", 26 linear, defsrv); 27 else 28 snprintf(addr, sizeof(addr), "net!%s", linear); 29 } 30 else { 31 if(defsrv) 32 snprintf(addr, sizeof(addr), "%s!%s!%s", defnet, 33 linear, defsrv); 34 else 35 snprintf(addr, sizeof(addr), "%s!%s", defnet, 36 linear); 37 } 38 return addr; 39 } 40 41 /* 42 * if there is already a service, use it 43 */ 44 cp = strchr(cp+1, '!'); 45 if(cp) 46 return linear; 47 48 /* 49 * add default service 50 */ 51 if(defsrv == 0) 52 return linear; 53 snprintf(addr, sizeof(addr), "%s!%s", linear, defsrv); 54 55 return addr; 56 } 57