Esempio n. 1
0
int pcap_module::init(const osd_options &options)
{
	pcap_if_t *devs;
	char errbuf[PCAP_ERRBUF_SIZE];

	// FIXME: bridge between pcap_module and netdev_pcap
	module = this;

	if ((*pcap_findalldevs_dl)(&devs, errbuf) == -1)
	{
		osd_printf_error("Unable to get network devices: %s\n", errbuf);
		return 1;
	}

	while(devs)
	{
		if(devs->description) {
			add_netdev(devs->name, devs->description, create_pcap);
		} else {
			add_netdev(devs->name, devs->name, create_pcap);
		}
		devs = devs->next;
	}
	return 0;
}
Esempio n. 2
0
void init_pcap()
{
	pcap_if_t *devs;
	char errbuf[PCAP_ERRBUF_SIZE];
	handle = NULL;

	try
	{
		if(!(handle = LoadLibrary(L"wpcap.dll"))) throw GetLastError();
		if(!(pcap_findalldevs_dl = (int (*)(pcap_if_t **, char *))GetProcAddress(handle, "pcap_findalldevs")))
			throw GetLastError();
		if(!(pcap_open_live_dl = (pcap_t* (*)(const char *, int, int, int, char *))GetProcAddress(handle, "pcap_open_live")))
			throw GetLastError();
		if(!(pcap_next_ex_dl = (int (*)(pcap_t *, struct pcap_pkthdr **, const u_char **))GetProcAddress(handle, "pcap_next_ex")))
			throw GetLastError();
		if(!(pcap_compile_dl = (int (*)(pcap_t *, struct bpf_program *, char *, int, bpf_u_int32))GetProcAddress(handle, "pcap_compile")))
			throw GetLastError();
		if(!(pcap_close_dl = (void (*)(pcap_t *))GetProcAddress(handle, "pcap_close")))
			throw GetLastError();
		if(!(pcap_setfilter_dl = (int (*)(pcap_t *, struct bpf_program *))GetProcAddress(handle, "pcap_setfilter")))
			throw GetLastError();
		if(!(pcap_sendpacket_dl = (int (*)(pcap_t *, u_char *, int))GetProcAddress(handle, "pcap_sendpacket")))
			throw GetLastError();
		if(!(pcap_set_datalink_dl = (int (*)(pcap_t *, int))GetProcAddress(handle, "pcap_set_datalink")))
			throw GetLastError();
	}
	catch (DWORD e)
	{
		FreeLibrary(handle);
		mame_printf_verbose("Unable to load winpcap: %lx\n", e);
		return;
	}
	if(pcap_findalldevs_dl(&devs, errbuf) == -1)
	{
		FreeLibrary(handle);
		mame_printf_verbose("Unable to get network devices: %s\n", errbuf);
		return;
	}

	while(devs)
	{
		add_netdev(devs->name, devs->description, create_pcap);
		devs = devs->next;
	}
}
Esempio n. 3
0
static int
enet2_init( void )
{
	mol_device_node_t *dn;
	irq_info_t irqinfo;
	
	if( !(dn=prom_find_devices("mol-enet")) )
		return 0;
	if( prom_irq_lookup(dn, &irqinfo) != 1 )
		return 0;

	if( add_netdev(0, irqinfo.irq[0]) ) {
		prom_delete_node( dn );
		return 0;
	}
	register_osi_iface( osi_iface, sizeof(osi_iface) );
	return 1;
}
Esempio n. 4
0
void init_pcap()
{
	pcap_if_t *devs;
	char errbuf[PCAP_ERRBUF_SIZE];
	if(pcap_findalldevs(&devs, errbuf) == -1)
	{
		mame_printf_verbose("Unable to get network devices: %s\n", errbuf);
		return;
	}

	if (devs)
	{
		while(devs->next)
		{
			add_netdev(devs->name, devs->description, create_pcap);
			devs = devs->next;
		}
	}
}
Esempio n. 5
0
static int
mac_enet_init( void )
{
	int i;
	
	numifs = 0;
	memset( (char*)enetif, 0, sizeof(enetif) );

	if( !is_classic_boot() )
		return 0;

	for( i=0; numifs < MAX_ENET_IFS; i++ ) {
		mac_enet_t *is = &enetif[numifs];
		memset( is, 0, sizeof(*is) );		

		if( find_packet_driver(i, &is->iface) )
			break;
		add_netdev( is );
	}
	if( !numifs )
		return 0;
	
	os_interface_add_proc( OSI_ENET_OPEN, osip_open );
	os_interface_add_proc( OSI_ENET_CLOSE, osip_close );
	os_interface_add_proc( OSI_ENET_GET_ADDR, osip_get_address );
	os_interface_add_proc( OSI_ENET_GET_STATUS, osip_get_status );
	os_interface_add_proc( OSI_ENET_CONTROL, osip_control );
	os_interface_add_proc( OSI_ENET_GET_PACKET, osip_get_packet );
	os_interface_add_proc( OSI_ENET_SEND_PACKET, osip_send_packet );
	os_interface_add_proc( OSI_ENET_ADD_MULTI, osip_add_multicast );
	os_interface_add_proc( OSI_ENET_DEL_MULTI, osip_del_multicast );

	session_save_proc( save_enet_state, NULL, kDynamicChunk );
	if( loading_session() )
		load_enet_state();
	return 1;
}
Esempio n. 6
0
void init_tap()
{
	add_netdev("tap", "TAP/TUN Device", create_tap);
}
Esempio n. 7
0
int taptun_module::init()
{
	add_netdev("tap", "TAP/TUN Device", create_tap);
	return 0;
}