netif.h revision 1.7 1 1.7 tsutsui /* $NetBSD: netif.h,v 1.7 2009/01/17 14:00:36 tsutsui 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.7 tsutsui int (*netif_match)(struct netif *, void *);
13 1.7 tsutsui int (*netif_probe)(struct netif *, void *);
14 1.7 tsutsui void (*netif_init)(struct iodesc *, void *);
15 1.7 tsutsui int (*netif_get)(struct iodesc *, void *, size_t, saseconds_t);
16 1.7 tsutsui int (*netif_put)(struct iodesc *, void *, size_t);
17 1.7 tsutsui void (*netif_end)(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.7 tsutsui void netif_init(void);
54 1.7 tsutsui struct netif *netif_select(void *);
55 1.7 tsutsui int netif_probe(struct netif *, void *);
56 1.7 tsutsui void netif_attach(struct netif *, struct iodesc *, void *);
57 1.7 tsutsui void netif_detach(struct netif *);
58 1.1 brezak
59 1.7 tsutsui int netif_open(void *);
60 1.7 tsutsui int netif_close(int);
61 1.1 brezak
62 1.1 brezak #endif /* __SYS_LIBNETBOOT_NETIF_H */
63