Imported Upstream version 1.3.1~svn3789
This commit is contained in:
parent
ce56f3183d
commit
d869f11566
24 changed files with 420 additions and 456 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* (C) 2007-08 - Luca Deri <deri@ntop.org>
|
||||
* (C) 2007-09 - Luca Deri <deri@ntop.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -42,6 +42,7 @@ static void read_mac(char *ifname, char *mac_addr) {
|
|||
}
|
||||
|
||||
/* ********************************** */
|
||||
|
||||
/** @brief Open and configure the TAP device for packet read/write.
|
||||
*
|
||||
* This routine creates the interface via the tuntap driver then uses ifconfig
|
||||
|
@ -52,6 +53,7 @@ static void read_mac(char *ifname, char *mac_addr) {
|
|||
* if NULL system will assign a name
|
||||
* @param device_ip - address of iface
|
||||
* @param device_mask - netmask for device_ip
|
||||
* @param mtu - MTU for device_ip
|
||||
*
|
||||
* @return - negative value on error
|
||||
* - non-negative file-descriptor on success
|
||||
|
@ -60,7 +62,8 @@ int tuntap_open(tuntap_dev *device,
|
|||
char *dev, /* user-definable interface name, eg. edge0 */
|
||||
char *device_ip,
|
||||
char *device_mask,
|
||||
const char * device_mac ) {
|
||||
const char * device_mac,
|
||||
int mtu) {
|
||||
char *tuntap_device = "/dev/net/tun";
|
||||
#define N2N_LINUX_SYSTEMCMD_SIZE 128
|
||||
char buf[N2N_LINUX_SYSTEMCMD_SIZE];
|
||||
|
@ -69,7 +72,7 @@ int tuntap_open(tuntap_dev *device,
|
|||
|
||||
device->fd = open(tuntap_device, O_RDWR);
|
||||
if(device->fd < 0) {
|
||||
printf("ERROR: ioctl() [%s][%d]\n", strerror(errno), rc);
|
||||
printf("ERROR: ioctl() [%s][%d]\n", strerror(errno), errno);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -84,10 +87,6 @@ int tuntap_open(tuntap_dev *device,
|
|||
return -1;
|
||||
}
|
||||
|
||||
/* REVISIT: BbMja7: MTU should be related to MTU of the interface the tuntap
|
||||
* is built on. The value 1400 assumes an eth iface with MTU 1500, but would
|
||||
* fail for ppp at mtu=576.
|
||||
*/
|
||||
if ( device_mac )
|
||||
{
|
||||
/* Set the hw address before bringing the if up. */
|
||||
|
@ -97,12 +96,13 @@ int tuntap_open(tuntap_dev *device,
|
|||
traceEvent(TRACE_INFO, "Setting MAC: %s", buf);
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "/sbin/ifconfig %s %s netmask %s mtu 1400 up",
|
||||
ifr.ifr_name, device_ip, device_mask);
|
||||
snprintf(buf, sizeof(buf), "/sbin/ifconfig %s %s netmask %s mtu %d up",
|
||||
ifr.ifr_name, device_ip, device_mask, mtu);
|
||||
system(buf);
|
||||
traceEvent(TRACE_INFO, "Bringing up: %s", buf);
|
||||
|
||||
device->ip_addr = inet_addr(device_ip);
|
||||
device->device_mask = inet_addr(device_mask);
|
||||
read_mac(dev, (char*)device->mac_addr);
|
||||
return(device->fd);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue