mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-23 02:04:46 +00:00
Categorize the fields in struct bundle, and make the tunnel
device speed available in ``show bundle''.
This commit is contained in:
parent
b4b280abef
commit
faefde08e0
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/cvs2svn/branches/MP/; revision=35818
|
@ -23,7 +23,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: bundle.c,v 1.1.2.74 1998/05/06 18:50:02 brian Exp $
|
||||
* $Id: bundle.c,v 1.1.2.75 1998/05/06 23:49:27 brian Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -150,11 +150,11 @@ bundle_CleanInterface(const struct bundle *bundle)
|
|||
strerror(errno));
|
||||
return (-1);
|
||||
}
|
||||
strncpy(ifrq.ifr_name, bundle->ifname, sizeof ifrq.ifr_name - 1);
|
||||
strncpy(ifrq.ifr_name, bundle->ifp.Name, sizeof ifrq.ifr_name - 1);
|
||||
ifrq.ifr_name[sizeof ifrq.ifr_name - 1] = '\0';
|
||||
while (ID0ioctl(s, SIOCGIFADDR, &ifrq) == 0) {
|
||||
memset(&ifra.ifra_mask, '\0', sizeof ifra.ifra_mask);
|
||||
strncpy(ifra.ifra_name, bundle->ifname, sizeof ifra.ifra_name - 1);
|
||||
strncpy(ifra.ifra_name, bundle->ifp.Name, sizeof ifra.ifra_name - 1);
|
||||
ifra.ifra_name[sizeof ifra.ifra_name - 1] = '\0';
|
||||
ifra.ifra_addr = ifrq.ifr_addr;
|
||||
if (ID0ioctl(s, SIOCGIFDSTADDR, &ifrq) < 0) {
|
||||
|
@ -162,7 +162,7 @@ bundle_CleanInterface(const struct bundle *bundle)
|
|||
log_Printf(LogERROR,
|
||||
"bundle_CleanInterface: Can't get dst for %s on %s !\n",
|
||||
inet_ntoa(((struct sockaddr_in *)&ifra.ifra_addr)->sin_addr),
|
||||
bundle->ifname);
|
||||
bundle->ifp.Name);
|
||||
return 0;
|
||||
}
|
||||
ifra.ifra_broadaddr = ifrq.ifr_dstaddr;
|
||||
|
@ -171,7 +171,7 @@ bundle_CleanInterface(const struct bundle *bundle)
|
|||
log_Printf(LogERROR,
|
||||
"bundle_CleanInterface: Can't delete %s address on %s !\n",
|
||||
inet_ntoa(((struct sockaddr_in *)&ifra.ifra_addr)->sin_addr),
|
||||
bundle->ifname);
|
||||
bundle->ifp.Name);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -213,17 +213,17 @@ bundle_LayerUp(void *v, struct fsm *fp)
|
|||
|
||||
if (fp->proto == PROTO_LCP) {
|
||||
if (bundle->ncp.mp.active) {
|
||||
int speed;
|
||||
struct datalink *dl;
|
||||
|
||||
for (dl = bundle->links, speed = 0; dl; dl = dl->next)
|
||||
bundle->ifp.Speed = 0;
|
||||
for (dl = bundle->links; dl; dl = dl->next)
|
||||
if (dl->state == DATALINK_OPEN)
|
||||
speed += modem_Speed(dl->physical);
|
||||
if (speed)
|
||||
tun_configure(bundle, bundle->ncp.mp.peer_mrru, speed);
|
||||
} else
|
||||
tun_configure(bundle, fsm2lcp(fp)->his_mru,
|
||||
modem_Speed(link2physical(fp->link)));
|
||||
bundle->ifp.Speed += modem_Speed(dl->physical);
|
||||
tun_configure(bundle, bundle->ncp.mp.peer_mrru);
|
||||
} else {
|
||||
bundle->ifp.Speed = modem_Speed(link2physical(fp->link));
|
||||
tun_configure(bundle, fsm2lcp(fp)->his_mru);
|
||||
}
|
||||
} else if (fp->proto == PROTO_IPCP) {
|
||||
bundle_StartIdleTimer(bundle);
|
||||
bundle_Notify(bundle, EX_NORMAL);
|
||||
|
@ -244,14 +244,15 @@ bundle_LayerDown(void *v, struct fsm *fp)
|
|||
if (fp->proto == PROTO_IPCP)
|
||||
bundle_StopIdleTimer(bundle);
|
||||
else if (fp->proto == PROTO_LCP && bundle->ncp.mp.active) {
|
||||
int speed;
|
||||
struct datalink *dl;
|
||||
|
||||
for (dl = bundle->links, speed = 0; dl; dl = dl->next)
|
||||
bundle->ifp.Speed = 0;
|
||||
for (dl = bundle->links; dl; dl = dl->next)
|
||||
if (fp != &dl->physical->link.lcp.fsm && dl->state == DATALINK_OPEN)
|
||||
speed += modem_Speed(dl->physical);
|
||||
if (speed)
|
||||
tun_configure(bundle, bundle->ncp.mp.link.lcp.his_mru, speed);
|
||||
bundle->ifp.Speed += modem_Speed(dl->physical);
|
||||
if (bundle->ifp.Speed)
|
||||
/* Don't configure down to a speed of 0 */
|
||||
tun_configure(bundle, bundle->ncp.mp.link.lcp.his_mru);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -373,9 +374,9 @@ bundle_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e, int *n)
|
|||
|
||||
/* If there are aren't many packets queued, look for some more. */
|
||||
if (bundle->links && bundle_FillQueues(bundle) < 20) {
|
||||
if (*n < bundle->tun_fd + 1)
|
||||
*n = bundle->tun_fd + 1;
|
||||
FD_SET(bundle->tun_fd, r);
|
||||
if (*n < bundle->dev.fd + 1)
|
||||
*n = bundle->dev.fd + 1;
|
||||
FD_SET(bundle->dev.fd, r);
|
||||
result++;
|
||||
}
|
||||
|
||||
|
@ -397,7 +398,7 @@ bundle_IsSet(struct descriptor *d, const fd_set *fdset)
|
|||
if (descriptor_IsSet(desc, fdset))
|
||||
return 1;
|
||||
|
||||
return FD_ISSET(bundle->tun_fd, fdset);
|
||||
return FD_ISSET(bundle->dev.fd, fdset);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -415,12 +416,12 @@ bundle_DescriptorRead(struct descriptor *d, struct bundle *bundle,
|
|||
if (descriptor_IsSet(desc, fdset))
|
||||
descriptor_Read(desc, bundle, fdset);
|
||||
|
||||
if (FD_ISSET(bundle->tun_fd, fdset)) {
|
||||
if (FD_ISSET(bundle->dev.fd, fdset)) {
|
||||
struct tun_data tun;
|
||||
int n, pri;
|
||||
|
||||
/* something to read from tun */
|
||||
n = read(bundle->tun_fd, &tun, sizeof tun);
|
||||
n = read(bundle->dev.fd, &tun, sizeof tun);
|
||||
if (n < 0) {
|
||||
log_Printf(LogERROR, "read from tun: %s\n", strerror(errno));
|
||||
return;
|
||||
|
@ -517,7 +518,7 @@ bundle_Create(const char *prefix, struct prompt *prompt, int type)
|
|||
struct ifreq ifrq;
|
||||
static struct bundle bundle; /* there can be only one */
|
||||
|
||||
if (bundle.ifname != NULL) { /* Already allocated ! */
|
||||
if (bundle.ifp.Name != NULL) { /* Already allocated ! */
|
||||
log_Printf(LogERROR, "bundle_Create: There's only one BUNDLE !\n");
|
||||
return NULL;
|
||||
}
|
||||
|
@ -525,9 +526,10 @@ bundle_Create(const char *prefix, struct prompt *prompt, int type)
|
|||
err = ENOENT;
|
||||
enoentcount = 0;
|
||||
for (bundle.unit = 0; ; bundle.unit++) {
|
||||
snprintf(bundle.dev, sizeof bundle.dev, "%s%d", prefix, bundle.unit);
|
||||
bundle.tun_fd = ID0open(bundle.dev, O_RDWR);
|
||||
if (bundle.tun_fd >= 0)
|
||||
snprintf(bundle.dev.Name, sizeof bundle.dev.Name, "%s%d",
|
||||
prefix, bundle.unit);
|
||||
bundle.dev.fd = ID0open(bundle.dev.Name, O_RDWR);
|
||||
if (bundle.dev.fd >= 0)
|
||||
break;
|
||||
else if (errno == ENXIO) {
|
||||
err = errno;
|
||||
|
@ -539,7 +541,7 @@ bundle_Create(const char *prefix, struct prompt *prompt, int type)
|
|||
err = errno;
|
||||
}
|
||||
|
||||
if (bundle.tun_fd < 0) {
|
||||
if (bundle.dev.fd < 0) {
|
||||
log_Printf(LogWARN, "No available tunnel devices found (%s).\n",
|
||||
strerror(err));
|
||||
return NULL;
|
||||
|
@ -550,28 +552,28 @@ bundle_Create(const char *prefix, struct prompt *prompt, int type)
|
|||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (s < 0) {
|
||||
log_Printf(LogERROR, "bundle_Create: socket(): %s\n", strerror(errno));
|
||||
close(bundle.tun_fd);
|
||||
close(bundle.dev.fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bundle.ifname = strrchr(bundle.dev, '/');
|
||||
if (bundle.ifname == NULL)
|
||||
bundle.ifname = bundle.dev;
|
||||
bundle.ifp.Name = strrchr(bundle.dev.Name, '/');
|
||||
if (bundle.ifp.Name == NULL)
|
||||
bundle.ifp.Name = bundle.dev.Name;
|
||||
else
|
||||
bundle.ifname++;
|
||||
bundle.ifp.Name++;
|
||||
|
||||
/*
|
||||
* Now, bring up the interface.
|
||||
*/
|
||||
memset(&ifrq, '\0', sizeof ifrq);
|
||||
strncpy(ifrq.ifr_name, bundle.ifname, sizeof ifrq.ifr_name - 1);
|
||||
strncpy(ifrq.ifr_name, bundle.ifp.Name, sizeof ifrq.ifr_name - 1);
|
||||
ifrq.ifr_name[sizeof ifrq.ifr_name - 1] = '\0';
|
||||
if (ID0ioctl(s, SIOCGIFFLAGS, &ifrq) < 0) {
|
||||
log_Printf(LogERROR, "OpenTunnel: ioctl(SIOCGIFFLAGS): %s\n",
|
||||
strerror(errno));
|
||||
close(s);
|
||||
close(bundle.tun_fd);
|
||||
bundle.ifname = NULL;
|
||||
close(bundle.dev.fd);
|
||||
bundle.ifp.Name = NULL;
|
||||
return NULL;
|
||||
}
|
||||
ifrq.ifr_flags |= IFF_UP;
|
||||
|
@ -579,22 +581,23 @@ bundle_Create(const char *prefix, struct prompt *prompt, int type)
|
|||
log_Printf(LogERROR, "OpenTunnel: ioctl(SIOCSIFFLAGS): %s\n",
|
||||
strerror(errno));
|
||||
close(s);
|
||||
close(bundle.tun_fd);
|
||||
bundle.ifname = NULL;
|
||||
close(bundle.dev.fd);
|
||||
bundle.ifp.Name = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
close(s);
|
||||
|
||||
if ((bundle.ifIndex = GetIfIndex(bundle.ifname)) < 0) {
|
||||
log_Printf(LogERROR, "OpenTunnel: Can't find ifindex.\n");
|
||||
close(bundle.tun_fd);
|
||||
bundle.ifname = NULL;
|
||||
if ((bundle.ifp.Index = GetIfIndex(bundle.ifp.Name)) < 0) {
|
||||
log_Printf(LogERROR, "OpenTunnel: Can't find interface index.\n");
|
||||
close(bundle.dev.fd);
|
||||
bundle.ifp.Name = NULL;
|
||||
return NULL;
|
||||
}
|
||||
prompt_Printf(prompt, "Using interface: %s\n", bundle.ifp.Name);
|
||||
log_Printf(LogPHASE, "Using interface: %s\n", bundle.ifp.Name);
|
||||
|
||||
prompt_Printf(prompt, "Using interface: %s\n", bundle.ifname);
|
||||
log_Printf(LogPHASE, "Using interface: %s\n", bundle.ifname);
|
||||
bundle.ifp.Speed = 0;
|
||||
|
||||
bundle.routing_seq = 0;
|
||||
bundle.phase = PHASE_DEAD;
|
||||
|
@ -618,8 +621,8 @@ bundle_Create(const char *prefix, struct prompt *prompt, int type)
|
|||
bundle.links = datalink_Create("deflink", &bundle, type);
|
||||
if (bundle.links == NULL) {
|
||||
log_Printf(LogERROR, "Cannot create data link: %s\n", strerror(errno));
|
||||
close(bundle.tun_fd);
|
||||
bundle.ifname = NULL;
|
||||
close(bundle.dev.fd);
|
||||
bundle.ifp.Name = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -676,7 +679,7 @@ bundle_DownInterface(struct bundle *bundle)
|
|||
}
|
||||
|
||||
memset(&ifrq, '\0', sizeof ifrq);
|
||||
strncpy(ifrq.ifr_name, bundle->ifname, sizeof ifrq.ifr_name - 1);
|
||||
strncpy(ifrq.ifr_name, bundle->ifp.Name, sizeof ifrq.ifr_name - 1);
|
||||
ifrq.ifr_name[sizeof ifrq.ifr_name - 1] = '\0';
|
||||
if (ID0ioctl(s, SIOCGIFFLAGS, &ifrq) < 0) {
|
||||
log_Printf(LogERROR, "bundle_DownInterface: ioctl(SIOCGIFFLAGS): %s\n",
|
||||
|
@ -722,7 +725,7 @@ bundle_Destroy(struct bundle *bundle)
|
|||
desc = ndesc;
|
||||
}
|
||||
bundle->desc.next = NULL;
|
||||
bundle->ifname = NULL;
|
||||
bundle->ifp.Name = NULL;
|
||||
}
|
||||
|
||||
struct rtmsg {
|
||||
|
@ -774,11 +777,11 @@ bundle_SetRoute(struct bundle *bundle, int cmd, struct in_addr dst,
|
|||
const char *iname;
|
||||
int ilen;
|
||||
|
||||
iname = Index2Nam(bundle->ifIndex);
|
||||
iname = Index2Nam(bundle->ifp.Index);
|
||||
ilen = strlen(iname);
|
||||
dl.sdl_len = sizeof dl - sizeof dl.sdl_data + ilen;
|
||||
dl.sdl_family = AF_LINK;
|
||||
dl.sdl_index = bundle->ifIndex;
|
||||
dl.sdl_index = bundle->ifp.Index;
|
||||
dl.sdl_type = 0;
|
||||
dl.sdl_nlen = ilen;
|
||||
dl.sdl_alen = 0;
|
||||
|
@ -960,7 +963,9 @@ bundle_ShowStatus(struct cmdargs const *arg)
|
|||
int remaining;
|
||||
|
||||
prompt_Printf(arg->prompt, "Phase %s\n", bundle_PhaseName(arg->bundle));
|
||||
prompt_Printf(arg->prompt, " Interface: %s\n", arg->bundle->dev);
|
||||
prompt_Printf(arg->prompt, " Device: %s\n", arg->bundle->dev.Name);
|
||||
prompt_Printf(arg->prompt, " Interface: %s @ %lubps\n",
|
||||
arg->bundle->ifp.Name, arg->bundle->ifp.Speed);
|
||||
|
||||
prompt_Printf(arg->prompt, "\nDefaults:\n");
|
||||
prompt_Printf(arg->prompt, " Label: %s\n", arg->bundle->cfg.label);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: bundle.h,v 1.1.2.36 1998/05/05 23:29:57 brian Exp $
|
||||
* $Id: bundle.h,v 1.1.2.37 1998/05/06 18:50:04 brian Exp $
|
||||
*/
|
||||
|
||||
#define PHASE_DEAD 0 /* Link is dead */
|
||||
|
@ -54,11 +54,19 @@ struct prompt;
|
|||
|
||||
struct bundle {
|
||||
struct descriptor desc; /* really all our datalinks */
|
||||
int unit; /* The tun number */
|
||||
int ifIndex; /* The interface number */
|
||||
int tun_fd; /* The /dev/tunX descriptor */
|
||||
char dev[20]; /* The /dev/tunX name */
|
||||
char *ifname; /* The interface name */
|
||||
int unit; /* The device/interface unit number */
|
||||
|
||||
struct {
|
||||
char Name[20]; /* The /dev/XXXX name */
|
||||
int fd; /* The /dev/XXXX descriptor */
|
||||
} dev;
|
||||
|
||||
struct {
|
||||
u_long Speed; /* struct tuninfo speed */
|
||||
int Index; /* The interface index */
|
||||
char *Name; /* The interface name */
|
||||
} ifp;
|
||||
|
||||
int routing_seq; /* The current routing sequence number */
|
||||
u_int phase; /* Curent phase */
|
||||
int phys_type; /* Union of all physical::type's */
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: command.c,v 1.131.2.77 1998/05/01 19:24:16 brian Exp $
|
||||
* $Id: command.c,v 1.131.2.78 1998/05/05 23:30:01 brian Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/types.h>
|
||||
|
@ -123,7 +123,7 @@
|
|||
#define NEG_DNS 50
|
||||
|
||||
const char Version[] = "2.0-beta";
|
||||
const char VersionDate[] = "$Date: 1998/05/01 19:24:16 $";
|
||||
const char VersionDate[] = "$Date: 1998/05/05 23:30:01 $";
|
||||
|
||||
static int ShowCommand(struct cmdargs const *);
|
||||
static int TerminalCommand(struct cmdargs const *);
|
||||
|
@ -338,7 +338,7 @@ ShellCommand(struct cmdargs const *arg, int bg)
|
|||
if (strcasecmp(arg->argv[argc + arg->argn], "HISADDR") == 0)
|
||||
argv[argc] = strdup(inet_ntoa(arg->bundle->ncp.ipcp.peer_ip));
|
||||
else if (strcasecmp(arg->argv[argc + arg->argn], "INTERFACE") == 0)
|
||||
argv[argc] = strdup(arg->bundle->ifname);
|
||||
argv[argc] = strdup(arg->bundle->ifp.Name);
|
||||
else if (strcasecmp(arg->argv[argc + arg->argn], "MYADDR") == 0)
|
||||
argv[argc] = strdup(inet_ntoa(arg->bundle->ncp.ipcp.my_ip));
|
||||
else
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: ip.c,v 1.38.2.24 1998/04/28 01:25:25 brian Exp $
|
||||
* $Id: ip.c,v 1.38.2.25 1998/05/01 19:24:43 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Return ICMP message for filterd packet
|
||||
|
@ -401,7 +401,7 @@ ip_Input(struct bundle *bundle, struct mbuf * bp)
|
|||
|
||||
nb = ntohs(((struct ip *) tun.data)->ip_len);
|
||||
nb += sizeof tun - sizeof tun.data;
|
||||
nw = write(bundle->tun_fd, &tun, nb);
|
||||
nw = write(bundle->dev.fd, &tun, nb);
|
||||
if (nw != nb) {
|
||||
if (nw == -1)
|
||||
log_Printf(LogERROR, "ip_Input: wrote %d, got %s\n", nb,
|
||||
|
@ -417,7 +417,7 @@ ip_Input(struct bundle *bundle, struct mbuf * bp)
|
|||
frag = (struct tun_data *)
|
||||
((char *)fptr - sizeof tun + sizeof tun.data);
|
||||
nb += sizeof tun - sizeof tun.data;
|
||||
nw = write(bundle->tun_fd, frag, nb);
|
||||
nw = write(bundle->dev.fd, frag, nb);
|
||||
if (nw != nb) {
|
||||
if (nw == -1)
|
||||
log_Printf(LogERROR, "ip_Input: wrote %d, got %s\n", nb,
|
||||
|
@ -454,7 +454,7 @@ ip_Input(struct bundle *bundle, struct mbuf * bp)
|
|||
ipcp_AddInOctets(&bundle->ncp.ipcp, nb);
|
||||
|
||||
nb += sizeof tun - sizeof tun.data;
|
||||
nw = write(bundle->tun_fd, &tun, nb);
|
||||
nw = write(bundle->dev.fd, &tun, nb);
|
||||
if (nw != nb) {
|
||||
if (nw == -1)
|
||||
log_Printf(LogERROR, "ip_Input: wrote %d, got %s\n", nb, strerror(errno));
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: ipcp.c,v 1.50.2.49 1998/05/01 19:24:49 brian Exp $
|
||||
* $Id: ipcp.c,v 1.50.2.50 1998/05/05 23:30:03 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o More RFC1772 backwoard compatibility
|
||||
|
@ -464,7 +464,7 @@ ipcp_SetIPaddress(struct bundle *bundle, struct in_addr myaddr,
|
|||
}
|
||||
|
||||
memset(&ifra, '\0', sizeof ifra);
|
||||
strncpy(ifra.ifra_name, bundle->ifname, sizeof ifra.ifra_name - 1);
|
||||
strncpy(ifra.ifra_name, bundle->ifp.Name, sizeof ifra.ifra_name - 1);
|
||||
ifra.ifra_name[sizeof ifra.ifra_name - 1] = '\0';
|
||||
|
||||
/* Set interface address */
|
||||
|
@ -642,7 +642,7 @@ ipcp_CleanInterface(struct ipcp *ipcp)
|
|||
if (ipcp->my_ifip.s_addr != INADDR_ANY ||
|
||||
ipcp->peer_ifip.s_addr != INADDR_ANY) {
|
||||
memset(&ifra, '\0', sizeof ifra);
|
||||
strncpy(ifra.ifra_name, ipcp->fsm.bundle->ifname,
|
||||
strncpy(ifra.ifra_name, ipcp->fsm.bundle->ifp.Name,
|
||||
sizeof ifra.ifra_name - 1);
|
||||
ifra.ifra_name[sizeof ifra.ifra_name - 1] = '\0';
|
||||
me = (struct sockaddr_in *)&ifra.ifra_addr;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: route.c,v 1.42.2.22 1998/05/05 23:30:12 brian Exp $
|
||||
* $Id: route.c,v 1.42.2.23 1998/05/06 00:38:55 brian Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -351,7 +351,7 @@ route_IfDelete(struct bundle *bundle, int all)
|
|||
char *sp, *cp, *ep;
|
||||
int mib[6];
|
||||
|
||||
log_Printf(LogDEBUG, "route_IfDelete (%d)\n", bundle->ifIndex);
|
||||
log_Printf(LogDEBUG, "route_IfDelete (%d)\n", bundle->ifp.Index);
|
||||
sa_none.s_addr = INADDR_ANY;
|
||||
|
||||
mib[0] = CTL_NET;
|
||||
|
@ -399,7 +399,7 @@ route_IfDelete(struct bundle *bundle, int all)
|
|||
Index2Nam(rtm->rtm_index), rtm->rtm_flags,
|
||||
inet_ntoa(((struct sockaddr_in *) sa)->sin_addr));
|
||||
if (rtm->rtm_addrs & RTA_DST && rtm->rtm_addrs & RTA_GATEWAY &&
|
||||
rtm->rtm_index == bundle->ifIndex &&
|
||||
rtm->rtm_index == bundle->ifp.Index &&
|
||||
(all || (rtm->rtm_flags & RTF_GATEWAY))) {
|
||||
sa_dst.s_addr = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
|
||||
sa = (struct sockaddr *)((char *)sa + sa->sa_len);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: tun.c,v 1.6.4.16 1998/05/01 19:26:09 brian Exp $
|
||||
* $Id: tun.c,v 1.6.4.17 1998/05/05 03:01:32 brian Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -60,18 +60,17 @@
|
|||
#include "tun.h"
|
||||
|
||||
void
|
||||
tun_configure(struct bundle *bundle, int mtu, int speed)
|
||||
tun_configure(struct bundle *bundle, int mtu)
|
||||
{
|
||||
struct tuninfo info;
|
||||
|
||||
info.type = 23;
|
||||
info.mtu = mtu;
|
||||
info.baudrate = speed;
|
||||
log_Printf(LogDEBUG, "Configuring tun at speed %d\n", speed);
|
||||
info.baudrate = bundle->ifp.Speed;
|
||||
#ifdef __OpenBSD__
|
||||
info.flags = IFF_UP|IFF_POINTOPOINT;
|
||||
#endif
|
||||
if (ioctl(bundle->tun_fd, TUNSIFINFO, &info) < 0)
|
||||
if (ioctl(bundle->dev.fd, TUNSIFINFO, &info) < 0)
|
||||
log_Printf(LogERROR, "tun_configure: ioctl(TUNSIFINFO): %s\n",
|
||||
strerror(errno));
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: tun.h,v 1.3.4.1 1998/02/02 19:32:16 brian Exp $
|
||||
* $Id: tun.h,v 1.3.4.2 1998/04/07 00:54:23 brian Exp $
|
||||
*/
|
||||
|
||||
struct tun_data {
|
||||
|
@ -43,4 +43,4 @@ struct tun_data {
|
|||
|
||||
struct bundle;
|
||||
|
||||
extern void tun_configure(struct bundle *, int, int);
|
||||
extern void tun_configure(struct bundle *, int);
|
||||
|
|
Loading…
Reference in a new issue