- dependencies between NE2k and PCI Pseudo-NIC removed from the config interface
- menu and option names for the network configuration fixed - NIC init code passes script name to ethernet module init code - VDE module added to the list of ethernet modules - constant BX_PACKET_BUFSIZE moved to eth.h
This commit is contained in:
parent
d1af05cbe2
commit
31e4cb1fee
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: config.cc,v 1.12 2004-09-28 17:37:52 vruppert Exp $
|
||||
// $Id: config.cc,v 1.13 2004-10-07 17:38:02 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -1292,6 +1292,9 @@ void bx_init_options ()
|
||||
#endif
|
||||
#ifdef ETH_ARPBACK
|
||||
"arpback",
|
||||
#endif
|
||||
#if HAVE_VDE
|
||||
"vde",
|
||||
#endif
|
||||
"vnet",
|
||||
NULL
|
||||
@ -1378,17 +1381,15 @@ void bx_init_options ()
|
||||
bx_options.ne2k.Oethmod,
|
||||
bx_options.ne2k.Oethdev,
|
||||
bx_options.ne2k.Oscript,
|
||||
bx_options.pnic.Oenabled,
|
||||
NULL
|
||||
};
|
||||
menu = new bx_list_c (BXP_NE2K, "NE2K Configuration", "", netdev_init_list);
|
||||
menu = new bx_list_c (BXP_NE2K, "Network Configuration", "", netdev_init_list);
|
||||
menu->get_options ()->set (menu->SHOW_PARENT);
|
||||
bx_options.ne2k.Opresent->set_dependent_list (
|
||||
new bx_list_c (BXP_NULL, "", "", ne2k_deps_list));
|
||||
bx_param_c **pnic_dependent_list = &netdev_init_list[8];
|
||||
bx_options.pnic.Oenabled->set_dependent_list (
|
||||
new bx_list_c (BXP_NULL, "", "", pnic_dependent_list));
|
||||
bx_options.ne2k.Opresent->set (0);
|
||||
|
||||
// SB16 options
|
||||
bx_options.sb16.Opresent = new bx_param_bool_c (BXP_SB16_PRESENT,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: textconfig.cc,v 1.26 2004-07-10 11:05:29 vruppert Exp $
|
||||
// $Id: textconfig.cc,v 1.27 2004-10-07 17:38:02 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// This is code for a text-mode configuration interface. Note that this file
|
||||
@ -267,7 +267,7 @@ static char *startup_options_prompt =
|
||||
"8. Disk options\n"
|
||||
"9. Serial or Parallel port options\n"
|
||||
"10. Sound Blaster 16 options\n"
|
||||
"11. NE2000 network card options\n"
|
||||
"11. Network card options\n"
|
||||
"12. Keyboard options\n"
|
||||
"13. PCI options\n"
|
||||
"14. Other options\n"
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth.cc,v 1.22 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth.cc,v 1.23 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -87,12 +87,12 @@ extern class bx_vnet_locator_c bx_vnet_match;
|
||||
eth_pktmover_c *
|
||||
eth_locator_c::create(const char *type, const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh, void *rxarg)
|
||||
eth_rx_handler_t rxh, void *rxarg, char *script)
|
||||
{
|
||||
#ifdef eth_static_constructors
|
||||
for (eth_locator_c *p = all; p != NULL; p = p->next) {
|
||||
if (strcmp(type, p->type) == 0)
|
||||
return (p->allocate(netif, macaddr, rxh, rxarg));
|
||||
return (p->allocate(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
#else
|
||||
eth_locator_c *ptr = 0;
|
||||
@ -150,7 +150,7 @@ eth_locator_c::create(const char *type, const char *netif,
|
||||
ptr = (eth_locator_c *) &bx_vnet_match;
|
||||
}
|
||||
if (ptr)
|
||||
return (ptr->allocate(netif, macaddr, rxh, rxarg));
|
||||
return (ptr->allocate(netif, macaddr, rxh, rxarg, script));
|
||||
#endif
|
||||
|
||||
return (NULL);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth.h,v 1.14 2004-10-03 19:30:36 sshwarts Exp $
|
||||
// $Id: eth.h,v 1.15 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -32,6 +32,8 @@
|
||||
#ifndef BX_ETH_H
|
||||
#define BX_ETH_H
|
||||
|
||||
#define BX_PACKET_BUFSIZE 2048 // Enough for an ether frame
|
||||
|
||||
typedef void (*eth_rx_handler_t)(void *arg, const void *buf, unsigned len);
|
||||
|
||||
static const Bit8u broadcast_macaddr[6] = {0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@ -66,13 +68,15 @@ public:
|
||||
static eth_pktmover_c *create(const char *type, const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg,
|
||||
char *script);
|
||||
protected:
|
||||
eth_locator_c(const char *type);
|
||||
virtual eth_pktmover_c *allocate(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) = 0;
|
||||
void *rxarg,
|
||||
char *script) = 0;
|
||||
private:
|
||||
static eth_locator_c *all;
|
||||
eth_locator_c *next;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_arpback.cc,v 1.16 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_arpback.cc,v 1.17 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -51,7 +51,6 @@
|
||||
//static const Bit8u external_ip[]={ 192, 168, 0, 2, 0x00 };
|
||||
//static const Bit8u ethtype_arp[]={0x08, 0x06, 0x00};
|
||||
|
||||
#define MAX_FRAME_SIZE 2048
|
||||
|
||||
//
|
||||
// Define the class. This is private to this module
|
||||
@ -85,8 +84,8 @@ public:
|
||||
protected:
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_arpback_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_arpback_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_arpback_match;
|
||||
|
||||
@ -99,7 +98,8 @@ protected:
|
||||
bx_arpback_pktmover_c::bx_arpback_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
this->rx_timer_index =
|
||||
bx_pc_system.register_timer(this, this->rx_timer_handler, 1000,
|
||||
@ -129,7 +129,7 @@ bx_arpback_pktmover_c::bx_arpback_pktmover_c(const char *netif,
|
||||
void
|
||||
bx_arpback_pktmover_c::sendpkt(void *buf, unsigned io_len)
|
||||
{
|
||||
if(io_len<MAX_FRAME_SIZE) {
|
||||
if(io_len<BX_PACKET_BUFSIZE) {
|
||||
eth_packet barney;
|
||||
memcpy(barney.buf,buf,io_len);
|
||||
barney.len=io_len;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_fbsd.cc,v 1.30 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_fbsd.cc,v 1.31 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -71,8 +71,6 @@ extern "C" {
|
||||
|
||||
#define BX_BPF_POLL 1000 // Poll for a frame every 250 usecs
|
||||
|
||||
#define BX_BPF_BUFSIZ 2048 // enough for an ether frame + bpf hdr
|
||||
|
||||
#define BX_BPF_INSNSIZ 8 // number of bpf insns
|
||||
|
||||
// template filter for a unicast mac address and all
|
||||
@ -104,7 +102,7 @@ public:
|
||||
bx_fbsd_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
|
||||
private:
|
||||
@ -129,8 +127,8 @@ protected:
|
||||
eth_pktmover_c *allocate(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_fbsd_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_fbsd_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_fbsd_match;
|
||||
|
||||
@ -147,7 +145,8 @@ protected:
|
||||
bx_fbsd_pktmover_c::bx_fbsd_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
char device[sizeof "/dev/bpf000"];
|
||||
int tmpfd;
|
||||
@ -186,7 +185,7 @@ bx_fbsd_pktmover_c::bx_fbsd_pktmover_c(const char *netif,
|
||||
}
|
||||
|
||||
// Set buffer size
|
||||
v = BX_BPF_BUFSIZ;
|
||||
v = BX_PACKET_BUFSIZE;
|
||||
if (ioctl(this->bpf_fd, BIOCSBLEN, (caddr_t)&v) < 0) {
|
||||
BX_PANIC(("eth_freebsd: could not set buffer size: %s", strerror(errno)));
|
||||
close(this->bpf_fd);
|
||||
@ -327,7 +326,7 @@ void
|
||||
bx_fbsd_pktmover_c::rx_timer(void)
|
||||
{
|
||||
int nbytes = 0;
|
||||
unsigned char rxbuf[BX_BPF_BUFSIZ];
|
||||
unsigned char rxbuf[BX_PACKET_BUFSIZE];
|
||||
struct bpf_hdr *bhdr;
|
||||
struct bpf_stat bstat;
|
||||
static struct bpf_stat previous_bstat;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_linux.cc,v 1.19 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_linux.cc,v 1.20 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -68,8 +68,6 @@ extern "C" {
|
||||
|
||||
#define BX_PACKET_POLL 1000 // Poll for a frame every 1000 usecs
|
||||
|
||||
#define BX_PACKET_BUFSIZ 2048 // Enough for an ether frame
|
||||
|
||||
// template filter for a unicast mac address and all
|
||||
// multicast/broadcast frames
|
||||
static const struct sock_filter macfilter[] = {
|
||||
@ -99,7 +97,8 @@ public:
|
||||
bx_linux_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg,
|
||||
char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
|
||||
private:
|
||||
@ -124,8 +123,8 @@ protected:
|
||||
eth_pktmover_c *allocate(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_linux_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_linux_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_linux_match;
|
||||
|
||||
@ -139,7 +138,8 @@ protected:
|
||||
bx_linux_pktmover_c::bx_linux_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
struct sockaddr_ll sll;
|
||||
struct packet_mreq mr;
|
||||
@ -259,7 +259,7 @@ void
|
||||
bx_linux_pktmover_c::rx_timer(void)
|
||||
{
|
||||
int nbytes = 0;
|
||||
Bit8u rxbuf[BX_PACKET_BUFSIZ];
|
||||
Bit8u rxbuf[BX_PACKET_BUFSIZE];
|
||||
struct sockaddr_ll sll;
|
||||
socklen_t fromlen;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_null.cc,v 1.17 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_null.cc,v 1.18 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -51,7 +51,7 @@ class bx_null_pktmover_c : public eth_pktmover_c {
|
||||
public:
|
||||
bx_null_pktmover_c(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
private:
|
||||
int rx_timer_index;
|
||||
@ -70,8 +70,8 @@ public:
|
||||
protected:
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_null_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_null_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_null_match;
|
||||
|
||||
@ -84,7 +84,8 @@ protected:
|
||||
bx_null_pktmover_c::bx_null_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
#if BX_ETH_NULL_LOGGING
|
||||
// Start the rx poll
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_packetmaker.h,v 1.7 2004-09-18 12:35:13 vruppert Exp $
|
||||
// $Id: eth_packetmaker.h,v 1.8 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
|
||||
#ifdef ETH_ARPBACK
|
||||
|
||||
#define PACKET_BUF_SIZE 2048
|
||||
static const Bit8u internal_mac[]={0xB0, 0xC4, 0x20, 0x20, 0x00, 0x00, 0x00};
|
||||
static const Bit8u external_mac[]={0xB0, 0xC4, 0x20, 0x20, 0x00, 0x00, 0x00};
|
||||
static const Bit8u external_ip[]={ 192, 168, 0, 2, 0x00 };
|
||||
@ -22,7 +21,7 @@ static const Bit8u prot_tcp=6;
|
||||
|
||||
class eth_packet {
|
||||
public:
|
||||
Bit8u buf[PACKET_BUF_SIZE];
|
||||
Bit8u buf[BX_PACKET_BUFSIZE];
|
||||
Bit32u len;
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_tap.cc,v 1.23 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_tap.cc,v 1.24 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -114,7 +114,6 @@
|
||||
#include <errno.h>
|
||||
|
||||
#define BX_ETH_TAP_LOGGING 0
|
||||
#define BX_PACKET_BUFSIZ 2048 // Enough for an ether frame
|
||||
|
||||
//
|
||||
// Define the class. This is private to this module
|
||||
@ -123,7 +122,7 @@ class bx_tap_pktmover_c : public eth_pktmover_c {
|
||||
public:
|
||||
bx_tap_pktmover_c(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
private:
|
||||
int fd;
|
||||
@ -146,8 +145,8 @@ public:
|
||||
protected:
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_tap_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_tap_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_tap_match;
|
||||
|
||||
@ -160,7 +159,8 @@ protected:
|
||||
bx_tap_pktmover_c::bx_tap_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
int flags;
|
||||
char filename[BX_PATHNAME_LEN];
|
||||
@ -222,12 +222,11 @@ bx_tap_pktmover_c::bx_tap_pktmover_c(const char *netif,
|
||||
/* Execute the configuration script */
|
||||
char intname[IFNAMSIZ];
|
||||
strcpy(intname,netif);
|
||||
char *scriptname=bx_options.ne2k.Oscript->getptr();
|
||||
if((scriptname != NULL)
|
||||
&&(strcmp(scriptname, "") != 0)
|
||||
&&(strcmp(scriptname, "none") != 0)) {
|
||||
if (execute_script(scriptname, intname) < 0)
|
||||
BX_ERROR (("execute script '%s' on %s failed", scriptname, intname));
|
||||
if((script != NULL)
|
||||
&&(strcmp(script, "") != 0)
|
||||
&&(strcmp(script, "none") != 0)) {
|
||||
if (execute_script(script, intname) < 0)
|
||||
BX_ERROR (("execute script '%s' on %s failed", script, intname));
|
||||
}
|
||||
|
||||
// Start the rx poll
|
||||
@ -269,7 +268,7 @@ bx_tap_pktmover_c::bx_tap_pktmover_c(const char *netif,
|
||||
void
|
||||
bx_tap_pktmover_c::sendpkt(void *buf, unsigned io_len)
|
||||
{
|
||||
Bit8u txbuf[BX_PACKET_BUFSIZ];
|
||||
Bit8u txbuf[BX_PACKET_BUFSIZE];
|
||||
txbuf[0] = 0;
|
||||
txbuf[1] = 0;
|
||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__APPLE__) // Should be fixed for other *BSD
|
||||
@ -315,7 +314,7 @@ void bx_tap_pktmover_c::rx_timer_handler (void *this_ptr)
|
||||
void bx_tap_pktmover_c::rx_timer ()
|
||||
{
|
||||
int nbytes;
|
||||
Bit8u buf[BX_PACKET_BUFSIZ];
|
||||
Bit8u buf[BX_PACKET_BUFSIZE];
|
||||
Bit8u *rxbuf;
|
||||
if (fd<0) return;
|
||||
nbytes = read (fd, buf, sizeof(buf));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_tuntap.cc,v 1.18 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_tuntap.cc,v 1.19 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -67,7 +67,6 @@
|
||||
#include <errno.h>
|
||||
|
||||
#define BX_ETH_TUNTAP_LOGGING 0
|
||||
#define BX_PACKET_BUFSIZ 2048 // Enough for an ether frame
|
||||
|
||||
int tun_alloc(char *dev);
|
||||
|
||||
@ -78,7 +77,7 @@ class bx_tuntap_pktmover_c : public eth_pktmover_c {
|
||||
public:
|
||||
bx_tuntap_pktmover_c(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
private:
|
||||
int fd;
|
||||
@ -101,8 +100,8 @@ public:
|
||||
protected:
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_tuntap_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_tuntap_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_tuntap_match;
|
||||
|
||||
@ -115,7 +114,8 @@ protected:
|
||||
bx_tuntap_pktmover_c::bx_tuntap_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
int flags;
|
||||
|
||||
@ -179,12 +179,11 @@ bx_tuntap_pktmover_c::bx_tuntap_pktmover_c(const char *netif,
|
||||
BX_INFO (("eth_tuntap: opened %s device", netif));
|
||||
|
||||
/* Execute the configuration script */
|
||||
char *scriptname=bx_options.ne2k.Oscript->getptr();
|
||||
if((scriptname != NULL)
|
||||
&&(strcmp(scriptname, "") != 0)
|
||||
&&(strcmp(scriptname, "none") != 0)) {
|
||||
if (execute_script(scriptname, intname) < 0)
|
||||
BX_ERROR (("execute script '%s' on %s failed", scriptname, intname));
|
||||
if((script != NULL)
|
||||
&&(strcmp(script, "") != 0)
|
||||
&&(strcmp(script, "none") != 0)) {
|
||||
if (execute_script(script, intname) < 0)
|
||||
BX_ERROR (("execute script '%s' on %s failed", script, intname));
|
||||
}
|
||||
|
||||
// Start the rx poll
|
||||
@ -234,7 +233,7 @@ bx_tuntap_pktmover_c::sendpkt(void *buf, unsigned io_len)
|
||||
BX_DEBUG (("wrote %d bytes on tuntap - 14 bytes Ethernet header", io_len));
|
||||
}
|
||||
#elif NEVERDEF
|
||||
Bit8u txbuf[BX_PACKET_BUFSIZ];
|
||||
Bit8u txbuf[BX_PACKET_BUFSIZE];
|
||||
txbuf[0] = 0;
|
||||
txbuf[1] = 0;
|
||||
memcpy (txbuf+2, buf, io_len);
|
||||
@ -282,7 +281,7 @@ void bx_tuntap_pktmover_c::rx_timer_handler (void *this_ptr)
|
||||
void bx_tuntap_pktmover_c::rx_timer ()
|
||||
{
|
||||
int nbytes;
|
||||
Bit8u buf[BX_PACKET_BUFSIZ];
|
||||
Bit8u buf[BX_PACKET_BUFSIZE];
|
||||
Bit8u *rxbuf;
|
||||
if (fd<0) return;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_vde.cc,v 1.7 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_vde.cc,v 1.8 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2003 Renzo Davoli
|
||||
@ -55,7 +55,6 @@
|
||||
#define SWITCH_MAGIC 0xfeedface
|
||||
|
||||
#define BX_ETH_VDE_LOGGING 0
|
||||
#define BX_PACKET_BUFSIZ 2048 // Enough for an ether frame
|
||||
|
||||
int vde_alloc(char *dev,int *fdp,struct sockaddr_un *pdataout);
|
||||
|
||||
@ -66,7 +65,7 @@ class bx_vde_pktmover_c : public eth_pktmover_c {
|
||||
public:
|
||||
bx_vde_pktmover_c(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg);
|
||||
void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
private:
|
||||
int fd;
|
||||
@ -89,8 +88,8 @@ public:
|
||||
protected:
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
return (new bx_vde_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_vde_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_vde_match;
|
||||
|
||||
@ -103,7 +102,8 @@ protected:
|
||||
bx_vde_pktmover_c::bx_vde_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
int flags;
|
||||
//if (strncmp (netif, "vde", 3) != 0) {
|
||||
@ -132,12 +132,11 @@ bx_vde_pktmover_c::bx_vde_pktmover_c(const char *netif,
|
||||
BX_INFO (("eth_vde: opened %s device", netif));
|
||||
|
||||
/* Execute the configuration script */
|
||||
char *scriptname=bx_options.ne2k.Oscript->getptr();
|
||||
if((scriptname != NULL)
|
||||
&&(strcmp(scriptname, "") != 0)
|
||||
&&(strcmp(scriptname, "none") != 0)) {
|
||||
if (execute_script(scriptname, intname) < 0)
|
||||
BX_ERROR (("execute script '%s' on %s failed", scriptname, intname));
|
||||
if((script != NULL)
|
||||
&&(strcmp(script, "") != 0)
|
||||
&&(strcmp(script, "none") != 0)) {
|
||||
if (execute_script(script, intname) < 0)
|
||||
BX_ERROR (("execute script '%s' on %s failed", script, intname));
|
||||
}
|
||||
|
||||
// Start the rx poll
|
||||
@ -218,7 +217,7 @@ void bx_vde_pktmover_c::rx_timer_handler (void *this_ptr)
|
||||
void bx_vde_pktmover_c::rx_timer ()
|
||||
{
|
||||
int nbytes;
|
||||
Bit8u buf[BX_PACKET_BUFSIZ];
|
||||
Bit8u buf[BX_PACKET_BUFSIZE];
|
||||
Bit8u *rxbuf;
|
||||
struct sockaddr_un datain;
|
||||
socklen_t datainsize;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_vnet.cc,v 1.9 2004-10-03 20:02:09 vruppert Exp $
|
||||
// $Id: eth_vnet.cc,v 1.10 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// virtual Ethernet locator
|
||||
@ -40,11 +40,10 @@ static const Bit8u broadcast_ipv4addr[3][4] =
|
||||
{192,168, 10,255},
|
||||
};
|
||||
|
||||
#define IPPACKET_MAX 2048
|
||||
#define ICMP_ECHO_PACKET_MAX 128
|
||||
#define LAYER4_LISTEN_MAX 128
|
||||
|
||||
static Bit8u packet_buffer[IPPACKET_MAX];
|
||||
static Bit8u packet_buffer[BX_PACKET_BUFSIZE];
|
||||
static unsigned packet_len;
|
||||
|
||||
typedef void (*layer4_handler_t)(
|
||||
@ -110,7 +109,7 @@ public:
|
||||
bx_vnet_pktmover_c();
|
||||
void pktmover_init(
|
||||
const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh, void *rxarg);
|
||||
eth_rx_handler_t rxh, void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
private:
|
||||
void guest_to_host(const Bit8u *buf, unsigned io_len);
|
||||
@ -183,10 +182,10 @@ protected:
|
||||
eth_pktmover_c *allocate(
|
||||
const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg) {
|
||||
void *rxarg, char *script) {
|
||||
bx_vnet_pktmover_c *pktmover;
|
||||
pktmover = new bx_vnet_pktmover_c();
|
||||
pktmover->pktmover_init(netif, macaddr, rxh, rxarg);
|
||||
pktmover->pktmover_init(netif, macaddr, rxh, rxarg, script);
|
||||
return pktmover;
|
||||
}
|
||||
} bx_vnet_match;
|
||||
@ -246,7 +245,7 @@ bx_vnet_pktmover_c::bx_vnet_pktmover_c()
|
||||
void
|
||||
bx_vnet_pktmover_c::pktmover_init(
|
||||
const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh, void *rxarg)
|
||||
eth_rx_handler_t rxh, void *rxarg, char *script)
|
||||
{
|
||||
BX_INFO(("ne2k vnet driver"));
|
||||
this->rxh = rxh;
|
||||
@ -678,9 +677,9 @@ bx_vnet_pktmover_c::host_to_guest_udpipv4_packet(
|
||||
unsigned target_port, unsigned source_port,
|
||||
const Bit8u *udpdata, unsigned udpdata_len)
|
||||
{
|
||||
Bit8u ipbuf[IPPACKET_MAX];
|
||||
Bit8u ipbuf[BX_PACKET_BUFSIZE];
|
||||
|
||||
if ((udpdata_len + 42U) > IPPACKET_MAX) {
|
||||
if ((udpdata_len + 42U) > BX_PACKET_BUFSIZE) {
|
||||
BX_PANIC(("generated udp data is too long"));
|
||||
return;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: eth_win32.cc,v 1.23 2004-10-03 20:02:10 vruppert Exp $
|
||||
// $Id: eth_win32.cc,v 1.24 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -207,7 +207,7 @@ static const struct bpf_insn macfilter[] = {
|
||||
class bx_win32_pktmover_c : public eth_pktmover_c {
|
||||
public:
|
||||
bx_win32_pktmover_c(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh, void *rxarg);
|
||||
eth_rx_handler_t rxh, void *rxarg, char *script);
|
||||
void sendpkt(void *buf, unsigned io_len);
|
||||
private:
|
||||
struct bpf_insn filter[8];
|
||||
@ -223,8 +223,10 @@ class bx_win32_locator_c : public eth_locator_c {
|
||||
public:
|
||||
bx_win32_locator_c(void) : eth_locator_c("win32") {}
|
||||
protected:
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr, eth_rx_handler_t rxh, void *rxarg) {
|
||||
return (new bx_win32_pktmover_c(netif, macaddr, rxh, rxarg));
|
||||
eth_pktmover_c *allocate(const char *netif, const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg, char *script) {
|
||||
return (new bx_win32_pktmover_c(netif, macaddr, rxh, rxarg, script));
|
||||
}
|
||||
} bx_win32_match;
|
||||
|
||||
@ -236,7 +238,8 @@ protected:
|
||||
bx_win32_pktmover_c::bx_win32_pktmover_c(const char *netif,
|
||||
const char *macaddr,
|
||||
eth_rx_handler_t rxh,
|
||||
void *rxarg)
|
||||
void *rxarg,
|
||||
char *script)
|
||||
{
|
||||
// Open Packet Driver Here.
|
||||
DWORD dwVersion;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: ne2k.cc,v 1.70 2004-09-25 22:15:02 vruppert Exp $
|
||||
// $Id: ne2k.cc,v 1.71 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -1302,7 +1302,7 @@ bx_ne2k_c::init(void)
|
||||
{
|
||||
char devname[16];
|
||||
|
||||
BX_DEBUG(("Init $Id: ne2k.cc,v 1.70 2004-09-25 22:15:02 vruppert Exp $"));
|
||||
BX_DEBUG(("Init $Id: ne2k.cc,v 1.71 2004-10-07 17:38:03 vruppert Exp $"));
|
||||
|
||||
// Read in values from config file
|
||||
memcpy(BX_NE2K_THIS s.physaddr, bx_options.ne2k.Omacaddr->getptr (), 6);
|
||||
@ -1402,7 +1402,8 @@ bx_ne2k_c::init(void)
|
||||
bx_options.ne2k.Oethdev->getptr (),
|
||||
(const char *) bx_options.ne2k.Omacaddr->getptr (),
|
||||
rx_handler,
|
||||
this);
|
||||
this,
|
||||
bx_options.ne2k.Oscript->getptr ());
|
||||
|
||||
if (BX_NE2K_THIS ethdev == NULL) {
|
||||
BX_PANIC(("could not find eth module %s", ethmod));
|
||||
@ -1412,7 +1413,7 @@ bx_ne2k_c::init(void)
|
||||
BX_NE2K_THIS ethdev = eth_locator_c::create("null", NULL,
|
||||
(const char *) bx_options.ne2k.Omacaddr->getptr (),
|
||||
rx_handler,
|
||||
this);
|
||||
this, "");
|
||||
if (BX_NE2K_THIS ethdev == NULL)
|
||||
BX_PANIC(("could not locate null module"));
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: pcipnic.cc,v 1.11 2004-10-03 20:02:10 vruppert Exp $
|
||||
// $Id: pcipnic.cc,v 1.12 2004-10-07 17:38:03 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2003 Fen Systems Ltd.
|
||||
@ -87,15 +87,12 @@ bx_pcipnic_c::init(void)
|
||||
// This code ripped wholesale from ne2k.cc:
|
||||
// Attach to the simulated ethernet dev
|
||||
char *ethmod = bx_options.pnic.Oethmod->get_choice(bx_options.pnic.Oethmod->get());
|
||||
//
|
||||
// FIXME: eth_tuntap.cc rips script straight from ne2k options...
|
||||
//
|
||||
bx_options.ne2k.Oscript->set ( bx_options.pnic.Oscript->getptr() );
|
||||
BX_PNIC_THIS ethdev = eth_locator_c::create(ethmod,
|
||||
bx_options.pnic.Oethdev->getptr (),
|
||||
(const char *) bx_options.pnic.Omacaddr->getptr (),
|
||||
rx_handler,
|
||||
this);
|
||||
this,
|
||||
bx_options.pnic.Oscript->getptr ());
|
||||
|
||||
if (BX_PNIC_THIS ethdev == NULL) {
|
||||
BX_PANIC(("could not find eth module %s", ethmod));
|
||||
@ -105,7 +102,7 @@ bx_pcipnic_c::init(void)
|
||||
BX_PNIC_THIS ethdev = eth_locator_c::create("null", NULL,
|
||||
(const char *) bx_options.pnic.Omacaddr->getptr (),
|
||||
rx_handler,
|
||||
this);
|
||||
this, "");
|
||||
if (BX_PNIC_THIS ethdev == NULL)
|
||||
BX_PANIC(("could not locate null module"));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user