Blame


1 be8b315d 2004-06-17 devnull #include <u.h>
2 be8b315d 2004-06-17 devnull #include <libc.h>
3 be8b315d 2004-06-17 devnull #include <auth.h>
4 be8b315d 2004-06-17 devnull #include "authlocal.h"
5 be8b315d 2004-06-17 devnull
6 be8b315d 2004-06-17 devnull /*
7 be8b315d 2004-06-17 devnull * make factotum add wep keys to an 802.11 device
8 be8b315d 2004-06-17 devnull */
9 be8b315d 2004-06-17 devnull int
10 be8b315d 2004-06-17 devnull auth_wep(char *dev, char *fmt, ...)
11 be8b315d 2004-06-17 devnull {
12 be8b315d 2004-06-17 devnull AuthRpc *rpc;
13 be8b315d 2004-06-17 devnull char *params, *p;
14 be8b315d 2004-06-17 devnull int fd;
15 be8b315d 2004-06-17 devnull va_list arg;
16 be8b315d 2004-06-17 devnull int rv;
17 be8b315d 2004-06-17 devnull
18 be8b315d 2004-06-17 devnull rv = -1;
19 be8b315d 2004-06-17 devnull
20 be8b315d 2004-06-17 devnull if(dev == nil){
21 be8b315d 2004-06-17 devnull werrstr("no device specified");
22 be8b315d 2004-06-17 devnull return rv;
23 be8b315d 2004-06-17 devnull }
24 be8b315d 2004-06-17 devnull
25 be8b315d 2004-06-17 devnull fd = open("/mnt/factotum/rpc", ORDWR);
26 be8b315d 2004-06-17 devnull if(fd < 0)
27 be8b315d 2004-06-17 devnull return rv;
28 be8b315d 2004-06-17 devnull
29 be8b315d 2004-06-17 devnull rpc = auth_allocrpc(fd);
30 be8b315d 2004-06-17 devnull if(rpc != nil){
31 be8b315d 2004-06-17 devnull quotefmtinstall(); /* just in case */
32 be8b315d 2004-06-17 devnull va_start(arg, fmt);
33 be8b315d 2004-06-17 devnull params = vsmprint(fmt, arg);
34 be8b315d 2004-06-17 devnull va_end(arg);
35 be8b315d 2004-06-17 devnull if(params != nil){
36 be8b315d 2004-06-17 devnull p = smprint("proto=wep %s", params);
37 be8b315d 2004-06-17 devnull if(p != nil){
38 be8b315d 2004-06-17 devnull if(auth_rpc(rpc, "start", p, strlen(p)) == ARok
39 be8b315d 2004-06-17 devnull && auth_rpc(rpc, "write", dev, strlen(dev)) == ARok)
40 be8b315d 2004-06-17 devnull rv = 0;
41 be8b315d 2004-06-17 devnull free(p);
42 be8b315d 2004-06-17 devnull }
43 be8b315d 2004-06-17 devnull free(params);
44 be8b315d 2004-06-17 devnull }
45 be8b315d 2004-06-17 devnull auth_freerpc(rpc);
46 be8b315d 2004-06-17 devnull }
47 be8b315d 2004-06-17 devnull close(fd);
48 be8b315d 2004-06-17 devnull
49 be8b315d 2004-06-17 devnull return rv;
50 be8b315d 2004-06-17 devnull }