1 #include <u.h> 2 #include <libc.h> 3 #include <ip.h> 4 5 void 6 usage(void) 7 { 8 fprint(2, "usage: %s [-x netmtpt]\n", argv0); 9 exits("usage"); 10 } 11 12 void 13 main(int argc, char **argv) 14 { 15 int fd, cfd, n; 16 char buf[4096], data[128], devdir[40], net[32]; 17 18 setnetmtpt(net, sizeof net, nil); 19 20 ARGBEGIN{ 21 case 'x': 22 setnetmtpt(net, sizeof net, EARGF(usage())); 23 break; 24 }ARGEND; 25 26 sprint(data, "%s/udp!*!echo", net); 27 cfd = announce(data, devdir); 28 if(cfd < 0) 29 sysfatal("can't announce %s: %r", data); 30 if(fprint(cfd, "headers") < 0) 31 sysfatal("can't set header mode: %r"); 32 33 sprint(data, "%s/data", devdir); 34 fd = open(data, ORDWR); 35 if(fd < 0) 36 sysfatal("open %s: %r", data); 37 while ((n = read(fd, buf, sizeof buf)) > 0) 38 write(fd, buf, n); 39 if (n < 0) 40 sysfatal("error reading: %r"); 41 exits(0); 42 } 43