示例#1
0
文件: icmp.c 项目: AgamAgarwal/minix
void icmp_init()
{
	int i;
	icmp_port_t *icmp_port;

	assert (BUF_S >= sizeof (nwio_ipopt_t));

	for (i= 0, icmp_port= icmp_port_table; i<ip_conf_nr; i++, icmp_port++)
	{
		icmp_port->icp_flags= ICPF_EMPTY;
		icmp_port->icp_state= ICPS_BEGIN;
		icmp_port->icp_ipport= i;
		icmp_port->icp_rate_count= 0;
		icmp_port->icp_rate_report= ICMP_MAX_RATE;
		icmp_port->icp_rate_lasttime= 0;
		ev_init(&icmp_port->icp_event);
	}

#ifndef BUF_CONSISTENCY_CHECK
	bf_logon(icmp_buffree);
#else
	bf_logon(icmp_buffree, icmp_bufcheck);
#endif

	for (i= 0, icmp_port= icmp_port_table; i<ip_conf_nr; i++, icmp_port++)
	{
		icmp_main (icmp_port);
	}
}
示例#2
0
文件: icmp.c 项目: yeonsh/Amoeba
PUBLIC void icmp_init()
{
	int i;
	icmp_port_t *icmp_port;

	assert (BUF_S >= sizeof (nwio_ipopt_t));

	for (i= 0, icmp_port= icmp_port_table; i<ICMP_PORT_NR; i++,
		icmp_port++)
	{
		icmp_port->icp_flags= ICPF_EMPTY;
		icmp_port->icp_state= ICPS_BEGIN;
		icmp_port->icp_ipport= i;
	}

#ifndef BUF_CONSISTENCY_CHECK
	bf_logon(icmp_buffree);
#else
	bf_logon(icmp_buffree, icmp_bufcheck);
#endif

	for (i= 0, icmp_port= icmp_port_table; i<ICMP_PORT_NR; i++,
		icmp_port++)
	{
		icmp_main (icmp_port);
	}
}
示例#3
0
文件: arp.c 项目: 7shi/minix-tools
PUBLIC void arp_init()
{
	arp_port_t *arp_port;
	arp_cache_t *cache;
	int i;

	assert (BUF_S >= sizeof(struct nwio_ethstat));
	assert (BUF_S >= sizeof(struct nwio_ethopt));
	assert (BUF_S >= sizeof(arp46_t));

	for (i=0, arp_port= arp_port_table; i<eth_conf_nr; i++, arp_port++)
	{
		arp_port->ap_state= APS_ERROR;	/* Mark all ports as
						 * unavailable */
	}

	cache= arp_cache;
	for (i=0; i<arp_cache_nr; i++, cache++)
	{
		cache->ac_state= ACS_UNUSED;
		cache->ac_flags= ACF_EMPTY;
		cache->ac_expire= 0;
		cache->ac_lastuse= 0;
	}

#ifndef BUF_CONSISTENCY_CHECK
	bf_logon(arp_buffree);
#else
	bf_logon(arp_buffree, arp_bufcheck);
#endif
}
示例#4
0
文件: udp.c 项目: yeonsh/Amoeba
PUBLIC void udp_init()
{
	udp_fd_t *udp_fd;
	udp_port_t *udp_port;
	int i, result;

	assert (BUF_S >= sizeof(struct nwio_ipopt));
	assert (BUF_S >= sizeof(struct nwio_ipconf));
	assert (BUF_S >= sizeof(struct nwio_udpopt));
	assert (BUF_S >= sizeof(struct udp_io_hdr));
	assert (UDP_HDR_SIZE == sizeof(udp_hdr_t));
	assert (UDP_IO_HDR_SIZE == sizeof(udp_io_hdr_t));

	for (i= 0, udp_fd= udp_fd_table; i<UDP_FD_NR; i++, udp_fd++)
	{
		udp_fd->uf_flags= UFF_EMPTY;
		udp_fd->uf_rdbuf_head= NULL;
	}

#ifndef BUF_CONSISTENCY_CHECK
	bf_logon(udp_buffree);
#else
	bf_logon(udp_buffree, udp_bufcheck);
#endif

	for (i= 0, udp_port= udp_port_table; i<UDP_PORT_NR; i++, udp_port++)
	{
		if (i == udp_conf_nr)
		{
			printf("udp_init: more ports than configurations\n");
			break;
		}
		udp_port->up_minor= udp_conf[i].uc_minor;
		udp_port->up_ipdev= udp_conf[i].uc_port;

		udp_port->up_flags= UPF_EMPTY;
		udp_port->up_state= UPS_EMPTY;
		udp_port->up_next_fd= udp_fd_table;
		udp_port->up_write_fd= NULL;

		result= sr_add_minor (udp_port->up_minor,
			udp_port-udp_port_table, udp_open, udp_close, udp_read,
			udp_write, udp_ioctl, udp_cancel);
		assert (result >= 0);

		udp_main(udp_port);
	}
}
示例#5
0
文件: udp.c 项目: AgamAgarwal/minix
void udp_init()
{
	udp_fd_t *udp_fd;
	udp_port_t *udp_port;
	int i, j, ifno;

	assert (BUF_S >= sizeof(struct nwio_ipopt));
	assert (BUF_S >= sizeof(struct nwio_ipconf));
	assert (BUF_S >= sizeof(struct nwio_udpopt));
	assert (BUF_S >= sizeof(struct udp_io_hdr));
	assert (UDP_HDR_SIZE == sizeof(udp_hdr_t));
	assert (UDP_IO_HDR_SIZE == sizeof(udp_io_hdr_t));

	for (i= 0, udp_fd= udp_fd_table; i<UDP_FD_NR; i++, udp_fd++)
	{
		udp_fd->uf_flags= UFF_EMPTY;
		udp_fd->uf_rdbuf_head= NULL;
	}

#ifndef BUF_CONSISTENCY_CHECK
	bf_logon(udp_buffree);
#else
	bf_logon(udp_buffree, udp_bufcheck);
#endif

	for (i= 0, udp_port= udp_port_table; i<udp_conf_nr; i++, udp_port++)
	{
		udp_port->up_ipdev= udp_conf[i].uc_port;

		udp_port->up_flags= UPF_EMPTY;
		udp_port->up_state= UPS_EMPTY;
		udp_port->up_next_fd= udp_fd_table;
		udp_port->up_write_fd= NULL;
		udp_port->up_wr_pack= NULL;
		udp_port->up_port_any= NULL;
		for (j= 0; j<UDP_PORT_HASH_NR; j++)
			udp_port->up_port_hash[j]= NULL;

		ifno= ip_conf[udp_port->up_ipdev].ic_ifno;
		sr_add_minor(if2minor(ifno, UDP_DEV_OFF),
			i, udp_open, udp_close, udp_read,
			udp_write, udp_ioctl, udp_cancel, udp_select);

		udp_main(udp_port);
	}
}
示例#6
0
文件: udp.c 项目: newtonsjr/source-
PUBLIC void udp_init()
{
	udp_fd_t *udp_fd;
	udp_port_t *udp_port;
	int i, result;

	assert (BUF_S >= sizeof(struct nwio_ipopt));
	assert (BUF_S >= sizeof(struct nwio_ipconf));
	assert (BUF_S >= sizeof(struct nwio_udpopt));
	assert (BUF_S >= sizeof(struct udp_io_hdr));
	assert (UDP_HDR_SIZE == sizeof(udp_hdr_t));
	assert (UDP_IO_HDR_SIZE == sizeof(udp_io_hdr_t));

	udp_port_table[0].up_minor= UDP_DEV0;
	udp_port_table[0].up_ipdev= IP0;

	for (i= 0, udp_fd= udp_fd_table; i<UDP_FD_NR; i++, udp_fd++)
	{
		udp_fd->uf_flags= UFF_EMPTY;
	}

	bf_logon(udp_buffree);

	for (i= 0, udp_port= udp_port_table; i<UDP_PORT_NR; i++, udp_port++)
	{
		udp_port->up_flags= UPF_EMPTY;
		udp_port->up_state= UPS_EMPTY;
		udp_port->up_next_fd= udp_fd_table;
		udp_port->up_write_fd= NULL;

		result= sr_add_minor (udp_port->up_minor,
			udp_port-udp_port_table, udp_open, udp_close, udp_read,
			udp_write, udp_ioctl, udp_cancel);
		assert (result >= 0);

		udp_main(udp_port);
	}
}
示例#7
0
文件: ip.c 项目: 7shi/minix-tools
PUBLIC void ip_init()
{
	int i, j, result;
	ip_ass_t *ip_ass;
	ip_fd_t *ip_fd;
	ip_port_t *ip_port;
	struct ip_conf *icp;

	assert (BUF_S >= sizeof(struct nwio_ethopt));
	assert (BUF_S >= IP_MAX_HDR_SIZE + ETH_HDR_SIZE);
	assert (BUF_S >= sizeof(nwio_ipopt_t));
	assert (BUF_S >= sizeof(nwio_route_t));

	for (i=0, ip_ass= ip_ass_table; i<IP_ASS_NR; i++, ip_ass++)
	{
		ip_ass->ia_frags= 0;
		ip_ass->ia_first_time= 0;
		ip_ass->ia_port= 0;
	}

	for (i=0, ip_fd= ip_fd_table; i<IP_FD_NR; i++, ip_fd++)
	{
		ip_fd->if_flags= IFF_EMPTY;
		ip_fd->if_rdbuf_head= 0;
	}

	for (i=0, ip_port= ip_port_table, icp= ip_conf;
		i<ip_conf_nr; i++, ip_port++, icp++)
	{
		ip_port->ip_port= i;
		ip_port->ip_flags= IPF_EMPTY;
		ip_port->ip_dev_main= (ip_dev_t)ip_bad_callback;
		ip_port->ip_dev_set_ipaddr= (ip_dev_t)ip_bad_callback;
		ip_port->ip_dev_send= (ip_dev_send_t)ip_bad_callback;
		ip_port->ip_dl_type= icp->ic_devtype;
		ip_port->ip_mtu= IP_DEF_MTU;
		ip_port->ip_mtu_max= IP_MAX_PACKSIZE;

		switch(ip_port->ip_dl_type)
		{
		case IPDL_ETH:
			ip_port->ip_dl.dl_eth.de_port= icp->ic_port;
			result= ipeth_init(ip_port);
			if (result == -1)
				continue;
			assert(result == NW_OK);
			break;
		case IPDL_PSIP:
			ip_port->ip_dl.dl_ps.ps_port= icp->ic_port;
			result= ipps_init(ip_port);
			if (result == -1)
				continue;
			assert(result == NW_OK);
			break;
		default:
			ip_panic(( "unknown ip_dl_type %d", 
							ip_port->ip_dl_type ));
			break;
		}
		ip_port->ip_loopb_head= NULL;
		ip_port->ip_loopb_tail= NULL;
		ev_init(&ip_port->ip_loopb_event);
		ip_port->ip_routeq_head= NULL;
		ip_port->ip_routeq_tail= NULL;
		ev_init(&ip_port->ip_routeq_event);
		ip_port->ip_flags |= IPF_CONFIGURED;
		ip_port->ip_proto_any= NULL;
		for (j= 0; j<IP_PROTO_HASH_NR; j++)
			ip_port->ip_proto[j]= NULL;
	}

#ifndef BUF_CONSISTENCY_CHECK
	bf_logon(ip_buffree);
#else
	bf_logon(ip_buffree, ip_bufcheck);
#endif

	icmp_init();
	ipr_init();

	for (i=0, ip_port= ip_port_table; i<ip_conf_nr; i++, ip_port++)
	{
		if (!(ip_port->ip_flags & IPF_CONFIGURED))
			continue;
		ip_port->ip_frame_id= (u16_t)get_time();

		sr_add_minor(if2minor(ip_conf[i].ic_ifno, IP_DEV_OFF),
			i, ip_open, ip_close, ip_read,
			ip_write, ip_ioctl, ip_cancel, ip_select);

		(*ip_port->ip_dev_main)(ip_port);
	}
}