netif.h revision 1.1 1 1.1 brezak
2 1.1 brezak #ifndef __SYS_LIBNETBOOT_NETIF_H
3 1.1 brezak #define __SYS_LIBNETBOOT_NETIF_H
4 1.1 brezak #include "iodesc.h"
5 1.1 brezak
6 1.1 brezak #define NENTS(x) sizeof(x)/sizeof(x[0])
7 1.1 brezak
8 1.1 brezak struct netif_driver {
9 1.1 brezak char *netif_bname;
10 1.1 brezak int (*netif_match) __P((struct netif *, void *));
11 1.1 brezak int (*netif_probe) __P((struct netif *, void *));
12 1.1 brezak void (*netif_init) __P((struct iodesc *, void *));
13 1.1 brezak int (*netif_get) __P((struct iodesc *, void *, int, time_t));
14 1.1 brezak int (*netif_put) __P((struct iodesc *, void *, int));
15 1.1 brezak void (*netif_end) __P((struct netif *));
16 1.1 brezak struct netif_dif *netif_ifs;
17 1.1 brezak int netif_nifs;
18 1.1 brezak };
19 1.1 brezak
20 1.1 brezak struct netif_dif {
21 1.1 brezak int dif_unit;
22 1.1 brezak int dif_nsel;
23 1.1 brezak struct netif_stats *dif_stats;
24 1.1 brezak void *dif_private;
25 1.1 brezak /* the following fields are used internally by the netif layer */
26 1.1 brezak u_long dif_used;
27 1.1 brezak };
28 1.1 brezak
29 1.1 brezak struct netif_stats {
30 1.1 brezak int collisions;
31 1.1 brezak int collision_error;
32 1.1 brezak int missed;
33 1.1 brezak int sent;
34 1.1 brezak int received;
35 1.1 brezak int deferred;
36 1.1 brezak int overflow;
37 1.1 brezak };
38 1.1 brezak
39 1.1 brezak struct netif {
40 1.1 brezak struct netif_driver *nif_driver;
41 1.1 brezak int nif_unit;
42 1.1 brezak int nif_sel;
43 1.1 brezak };
44 1.1 brezak
45 1.1 brezak extern struct netif_driver *netif_drivers[]; /* machdep */
46 1.1 brezak extern int n_netif_drivers;
47 1.1 brezak
48 1.1 brezak extern int netif_debug;
49 1.1 brezak
50 1.1 brezak void netif_init __P((void));
51 1.1 brezak struct netif *netif_select __P((void *));
52 1.1 brezak int netif_probe __P((struct netif *, void *));
53 1.1 brezak void netif_attach __P((struct netif *, struct iodesc *, void *));
54 1.1 brezak void netif_detach __P((struct netif *));
55 1.1 brezak int netif_get __P((struct iodesc *, void *, int, time_t));
56 1.1 brezak int netif_put __P((struct iodesc *, void *, int));
57 1.1 brezak
58 1.1 brezak int netif_open __P((void *));
59 1.1 brezak int netif_close __P((int));
60 1.1 brezak
61 1.1 brezak struct iodesc *socktodesc __P((int));
62 1.1 brezak
63 1.1 brezak #endif /* __SYS_LIBNETBOOT_NETIF_H */
64