netmkaddr.c 957 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. * make an address, add the defaults
  10. */
  11. char *
  12. netmkaddr(char *linear, char *defnet, char *defsrv)
  13. {
  14. static char addr[256];
  15. char *cp;
  16. /*
  17. * dump network name
  18. */
  19. cp = strchr(linear, '!');
  20. if(cp == 0){
  21. if(defnet==0){
  22. if(defsrv)
  23. snprintf(addr, sizeof(addr), "net!%s!%s",
  24. linear, defsrv);
  25. else
  26. snprintf(addr, sizeof(addr), "net!%s", linear);
  27. }
  28. else {
  29. if(defsrv)
  30. snprintf(addr, sizeof(addr), "%s!%s!%s", defnet,
  31. linear, defsrv);
  32. else
  33. snprintf(addr, sizeof(addr), "%s!%s", defnet,
  34. linear);
  35. }
  36. return addr;
  37. }
  38. /*
  39. * if there is already a service, use it
  40. */
  41. cp = strchr(cp+1, '!');
  42. if(cp)
  43. return linear;
  44. /*
  45. * add default service
  46. */
  47. if(defsrv == 0)
  48. return linear;
  49. snprintf(addr, sizeof(addr), "%s!%s", linear, defsrv);
  50. return addr;
  51. }