1 #include <u.h>
2 #include <libc.h>
3 #include <ip.h>
4
5 void
usage(void)6 usage(void)
7 {
8 fprint(2, "usage: %s [-x netmtpt]\n", argv0);
9 exits("usage");
10 }
11
12 void
main(int argc,char ** argv)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