14a5d661aSToomas Soome /* $NetBSD: netif.h,v 1.4 1995/09/14 23:45:30 pk Exp $ */ 24a5d661aSToomas Soome 34a5d661aSToomas Soome /* $FreeBSD$ */ 44a5d661aSToomas Soome 54a5d661aSToomas Soome #ifndef __SYS_LIBNETBOOT_NETIF_H 64a5d661aSToomas Soome #define __SYS_LIBNETBOOT_NETIF_H 74a5d661aSToomas Soome #include "iodesc.h" 84a5d661aSToomas Soome 94a5d661aSToomas Soome struct netif_driver { 104a5d661aSToomas Soome const char *netif_bname; 114a5d661aSToomas Soome int (*netif_match)(struct netif *, void *); 124a5d661aSToomas Soome int (*netif_probe)(struct netif *, void *); 134a5d661aSToomas Soome void (*netif_init)(struct iodesc *, void *); 14*7b2a1233SToomas Soome ssize_t (*netif_get)(struct iodesc *, void **, time_t); 15*7b2a1233SToomas Soome ssize_t (*netif_put)(struct iodesc *, void *, size_t); 164a5d661aSToomas Soome void (*netif_end)(struct netif *); 174a5d661aSToomas Soome struct netif_dif *netif_ifs; 184a5d661aSToomas Soome int netif_nifs; 194a5d661aSToomas Soome }; 204a5d661aSToomas Soome 214a5d661aSToomas Soome struct netif_dif { 224a5d661aSToomas Soome int dif_unit; 234a5d661aSToomas Soome int dif_nsel; 244a5d661aSToomas Soome struct netif_stats *dif_stats; 254a5d661aSToomas Soome void *dif_private; 264a5d661aSToomas Soome /* the following fields are used internally by the netif layer */ 274a5d661aSToomas Soome u_long dif_used; 284a5d661aSToomas Soome }; 294a5d661aSToomas Soome 304a5d661aSToomas Soome struct netif_stats { 314a5d661aSToomas Soome int collisions; 324a5d661aSToomas Soome int collision_error; 334a5d661aSToomas Soome int missed; 344a5d661aSToomas Soome int sent; 354a5d661aSToomas Soome int received; 364a5d661aSToomas Soome int deferred; 374a5d661aSToomas Soome int overflow; 384a5d661aSToomas Soome }; 394a5d661aSToomas Soome 404a5d661aSToomas Soome struct netif { 414a5d661aSToomas Soome struct netif_driver *nif_driver; 424a5d661aSToomas Soome int nif_unit; 434a5d661aSToomas Soome int nif_sel; 444a5d661aSToomas Soome void *nif_devdata; 454a5d661aSToomas Soome }; 464a5d661aSToomas Soome 474a5d661aSToomas Soome extern struct netif_driver *netif_drivers[]; /* machdep */ 484a5d661aSToomas Soome extern int n_netif_drivers; 494a5d661aSToomas Soome 504a5d661aSToomas Soome extern int netif_debug; 514a5d661aSToomas Soome 524a5d661aSToomas Soome void netif_init(void); 534a5d661aSToomas Soome struct netif *netif_select(void *); 544a5d661aSToomas Soome int netif_probe(struct netif *, void *); 554a5d661aSToomas Soome void netif_attach(struct netif *, struct iodesc *, void *); 564a5d661aSToomas Soome void netif_detach(struct netif *); 57*7b2a1233SToomas Soome ssize_t netif_get(struct iodesc *, void **, time_t); 584a5d661aSToomas Soome ssize_t netif_put(struct iodesc *, void *, size_t); 594a5d661aSToomas Soome 604a5d661aSToomas Soome int netif_open(void *); 614a5d661aSToomas Soome int netif_close(int); 624a5d661aSToomas Soome 634a5d661aSToomas Soome struct iodesc *socktodesc(int); 644a5d661aSToomas Soome 654a5d661aSToomas Soome #endif /* __SYS_LIBNETBOOT_NETIF_H */ 66