1 /* send wake-on-lan magic ethernet packet */
7 Eaddrlen = 6, /* 48 bits */
10 typedef struct Wolpack Wolpack;
13 uchar macs[16][Eaddrlen];
22 fprint(2, "usage: wol [-v] [-a dialstr] [-c password] macaddr\n");
27 fillmac(Wolpack *w, uchar *mac)
31 for(i = 0; i < nelem(w->macs); i++)
32 memmove(w->macs[i], mac, Eaddrlen);
41 print("\t%E\n", w->magic);
42 for(i = 0; i < nelem(w->macs); i++)
43 print("\t%E\n", w->macs[i]);
44 print("\t%6s\n", w->pass);
49 main(int argc, char* argv[])
52 char *argmac, *pass, *address;
55 .magic { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }
59 fmtinstall('E', eipfmt);
63 address = EARGF(usage());
66 pass = EARGF(usage());
79 print("mac is %s, pass is %s\n", argmac, pass);
81 parseether(mac, argmac);
85 sysfatal("password greater than 6 bytes");
92 address = "udp!255.255.255.255!0";
94 fd = dial(address, nil, nil, nil);
96 sysfatal("%s: %r", address);
97 nw = write(fd, &w, sizeof w);
99 sysfatal("error sending: %r");