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