nblistener.c 687 B

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