model to an instance-based model. Each ethernet driver instance is now responsible for exactly one network interface card. The port field in /etc/inet.conf now acts as an instance field instead. This patch also updates the data link protocol. This update: - eliminates the concept of ports entirely; - eliminates DL_GETNAME entirely; - standardizes on using m_source for IPC and DL_ENDPT for safecopies; - removes error codes from TASK/STAT replies, as they were unused; - removes a number of other old or unused fields; - names and renames a few other fields. All ethernet drivers have been changed to: - conform to the new protocol, and exactly that; - take on an instance number based on a given "instance" argument; - skip that number of PCI devices in probe iterations; - use config tables and environment variables based on that number; - no longer be limited to a predefined maximum of cards in any way; - get rid of any leftover non-safecopy support and other ancient junk; - have a correct banner protocol figure, or none at all. Other changes: * Inet.conf is now taken to be line-based, and supports #-comments. No existing installations are expected to be affected by this. * A new, select-based asynchio library replaces the old one. Kindly contributed by Kees J. Bot. * Inet now supports use of select() on IP devices. Combined, the last two changes together speed up dhcpd considerably in the presence of multiple interfaces. * A small bug has been fixed in nonamed.
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
inet/osdep_eth.h
 | 
						|
 | 
						|
Created:	Dec 30, 1991 by Philip Homburg
 | 
						|
 | 
						|
Copyright 1995 Philip Homburg
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef INET__OSDEP_ETH_H
 | 
						|
#define INET__OSDEP_ETH_H
 | 
						|
 | 
						|
#include "generic/event.h"
 | 
						|
 | 
						|
#define IOVEC_NR	16
 | 
						|
#define RD_IOVEC	((ETH_MAX_PACK_SIZE + BUF_S -1)/BUF_S)
 | 
						|
 | 
						|
typedef struct osdep_eth_port
 | 
						|
{
 | 
						|
	int etp_state;
 | 
						|
	int etp_flags;
 | 
						|
	endpoint_t etp_task;
 | 
						|
	int etp_recvconf;
 | 
						|
	iovec_s_t etp_wr_iovec[IOVEC_NR];
 | 
						|
	cp_grant_id_t etp_wr_vec_grant;
 | 
						|
	iovec_s_t etp_rd_iovec[RD_IOVEC];
 | 
						|
	cp_grant_id_t etp_rd_vec_grant;
 | 
						|
	event_t etp_recvev;
 | 
						|
	cp_grant_id_t etp_stat_gid;
 | 
						|
	eth_stat_t *etp_stat_buf;
 | 
						|
} osdep_eth_port_t;
 | 
						|
 | 
						|
#define OEPS_INIT		0	/* Not initialized */
 | 
						|
#define OEPS_CONF_SENT		1	/* Conf. request has been sent */
 | 
						|
#define OEPS_IDLE		2	/* Device is ready to accept requests */
 | 
						|
#define OEPS_RECV_SENT		3	/* Recv. request has been sent */
 | 
						|
#define OEPS_SEND_SENT		4	/* Send request has been sent */
 | 
						|
#define OEPS_GETSTAT_SENT	5	/* GETSTAT request has been sent */
 | 
						|
 | 
						|
#define OEPF_EMPTY	0
 | 
						|
#define OEPF_NEED_RECV	1	/* Issue recv. request when the state becomes
 | 
						|
				 * idle
 | 
						|
				 */
 | 
						|
#define OEPF_NEED_SEND	2	/* Issue send request when the state becomes
 | 
						|
				 * idle
 | 
						|
				 */
 | 
						|
#define OEPF_NEED_CONF	4	/* Issue conf request when the state becomes
 | 
						|
				 * idle
 | 
						|
				 */
 | 
						|
#define OEPF_NEED_STAT	8	/* Issue getstat request when the state becomes
 | 
						|
				 * idle
 | 
						|
				 */
 | 
						|
 | 
						|
#endif /* INET__OSDEP_ETH_H */
 | 
						|
 | 
						|
/*
 | 
						|
 * $PchId: osdep_eth.h,v 1.6 2001/04/20 06:39:54 philip Exp $
 | 
						|
 */
 |