181404Speter/* $NetBSD: netif.h,v 1.4 1995/09/14 23:45:30 pk Exp $ */ 281404Speter 381404Speter/* $FreeBSD$ */ 481404Speter 581404Speter#ifndef __SYS_LIBNETBOOT_NETIF_H 681404Speter#define __SYS_LIBNETBOOT_NETIF_H 781404Speter#include "iodesc.h" 881404Speter 981404Speter#define NENTS(x) sizeof(x)/sizeof(x[0]) 1081404Speter 1181404Speterstruct netif_driver { 1281404Speter const char *netif_bname; 1381404Speter int (*netif_match)(struct netif *, void *); 1481404Speter int (*netif_probe)(struct netif *, void *); 1581404Speter void (*netif_init)(struct iodesc *, void *); 1681404Speter int (*netif_get)(struct iodesc *, void *, size_t, time_t); 1781404Speter int (*netif_put)(struct iodesc *, void *, size_t); 1881404Speter void (*netif_end)(struct netif *); 1981404Speter struct netif_dif *netif_ifs; 2081404Speter int netif_nifs; 2181404Speter}; 2281404Speter 2381404Speterstruct netif_dif { 2481404Speter int dif_unit; 2581404Speter int dif_nsel; 2681404Speter struct netif_stats *dif_stats; 2781404Speter void *dif_private; 2881404Speter /* the following fields are used internally by the netif layer */ 2981404Speter u_long dif_used; 3081404Speter}; 3181404Speter 3281404Speterstruct netif_stats { 3381404Speter int collisions; 3481404Speter int collision_error; 3581404Speter int missed; 3681404Speter int sent; 3781404Speter int received; 3881404Speter int deferred; 3981404Speter int overflow; 4081404Speter}; 4181404Speter 4281404Speterstruct netif { 4381404Speter struct netif_driver *nif_driver; 4481404Speter int nif_unit; 4581404Speter int nif_sel; 4681404Speter void *nif_devdata; 4781404Speter}; 4881404Speter 4981404Speterextern struct netif_driver *netif_drivers[]; /* machdep */ 5081404Speterextern int n_netif_drivers; 5181404Speter 5281404Speterextern int netif_debug; 5381404Speter 5481404Spetervoid netif_init(void); 5581404Speterstruct netif *netif_select(void *); 5681404Speterint netif_probe(struct netif *, void *); 5781404Spetervoid netif_attach(struct netif *, struct iodesc *, void *); 5881404Spetervoid netif_detach(struct netif *); 5981404Speterssize_t netif_get(struct iodesc *, void *, size_t, time_t); 6081404Speterssize_t netif_put(struct iodesc *, void *, size_t); 6181404Speter 6281404Speterint netif_open(void *); 6381404Speterint netif_close(int); 6481404Speter 6581404Speterstruct iodesc *socktodesc(int); 6681404Speter 6781404Speter#endif /* __SYS_LIBNETBOOT_NETIF_H */ 6881404Speter