nblistener.c 738 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "headers.h"
  2. static char *hmsg = "headers";
  3. static char *ohmsg = "oldheaders";
  4. int nbudphdrsize;
  5. char *
  6. nbudpannounce(ushort port, int *fdp)
  7. {
  8. int data, ctl;
  9. char dir[64];
  10. char datafile[64+6];
  11. char addr[NETPATHLEN];
  12. snprint(addr, sizeof(addr), "udp!*!%d", port);
  13. /* get a udp port */
  14. ctl = announce(addr, dir);
  15. if(ctl < 0)
  16. return "can't announce on port";
  17. snprint(datafile, sizeof(datafile), "%s/data", dir);
  18. /* turn on header style interface */
  19. nbudphdrsize = Udphdrsize;
  20. if (write(ctl, hmsg, strlen(hmsg)) != strlen(hmsg)) {
  21. return "failed to turn on headers";
  22. }
  23. data = open(datafile, ORDWR);
  24. if (data < 0) {
  25. close(ctl);
  26. return "failed to open data file";
  27. }
  28. close(ctl);
  29. *fdp = data;
  30. return nil;
  31. }