xref: /titanic_51/usr/src/boot/lib/libstand/netif.h (revision 7b2a1233f92b2b3cb858f2fdb69378a9ab0a42f1)
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