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