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