summaryrefslogtreecommitdiff
path: root/noncore/net/networksetup/TODO
blob: 862d681d8a7f0ef323e2b56dfcff3708da6fe996 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
test WEP
WEP key in file wireless.conf is not encrypted !, therefore it is very easy to get the key out of the zaurus..

udchcp needs to output the dhcp information so interfaces can read it

interfacesetupimp really doesn't need a interface* pointer

Possible other modules to write: ppp, ipsec, bluetooth, ipchains

PPP module needs to scan pppd.tdb to see what is currently active

WLAN - add possiblity to input text or hex without knowing "s:"

Interface setupimp needs to use kernel calls.

Automaticly update the main list of interfaces:
> That would be me. :-D  netlink, can you point me in the right
> direction where  I can get more info on it?  (I figured there was some
> kenel call) 

You can look up the meaning of the packets you receive, or you can just go 
poll for changes you might be interested in each time you receive _any_ 
packet. Anything's better than periodic polling.

Note that you can't do this as non-root on some kernels. There's a patch 
which can go into the hh.org kernel if it's not already there. 
cf. http://marc.theaimsgroup.com/?l=linux-kernel&m=103520821605353&w=2


#include <asm/types.h>
#include <sys/socket.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>

int main(int argc, char **argv)
{
        int fd;
        unsigned char buf[4096];
        int ret;
        int i, j;
        struct sockaddr_nl snl;

        fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
        if (fd < 0) {
                perror("socket");
                exit(1);
        }

        snl.nl_family = AF_NETLINK;
        snl.nl_pad = 0;
        snl.nl_pid = getpid();
        snl.nl_groups = RTM_NEWLINK|RTM_DELLINK;

        if (bind(fd, &snl, sizeof(snl)) < 0) {
                perror("bind");
                exit(1);
        }
        while (1) {
                ret = recv(fd, buf, 4096, 0);
                if (ret < 0) {
                        perror("recv");
                        exit(1);
                }
                for (i=0; i<ret; i++) {
                        printf("%02x ", buf[i]);
                        }
                printf("\n");
        }

}
--