mirror of
https://github.com/paulusmack/ppp.git
synced 2024-12-13 14:13:38 +08:00
remove if address before changing
This commit is contained in:
parent
09032f7c09
commit
9ecdd467f9
@ -21,8 +21,8 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$Id: sys-bsd.c,v 1.28 1997/04/30 05:57:46 paulus Exp $";
|
||||
#endif
|
||||
static char rcsid[] = "$Id: sys-bsd.c,v 1.29 1997/11/27 06:10:04 paulus Exp $";
|
||||
/* $NetBSD: sys-bsd.c,v 1.1.1.3 1997/09/26 18:53:04 christos Exp $ */
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
@ -58,7 +58,12 @@ static char rcsid[] = "$Id: sys-bsd.c,v 1.28 1997/04/30 05:57:46 paulus Exp $";
|
||||
#include <netinet/in.h>
|
||||
|
||||
#if RTM_VERSION >= 3
|
||||
#include <netinet/if_ether.h>
|
||||
#include <sys/param.h>
|
||||
#if defined(NetBSD) && (NetBSD >= 199703)
|
||||
#include <netinet/if_inarp.h>
|
||||
#else /* NetBSD 1.2D or later */
|
||||
#include <net/if_ether.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "pppd.h"
|
||||
@ -946,6 +951,7 @@ sifaddr(u, o, h, m)
|
||||
u_int32_t o, h, m;
|
||||
{
|
||||
struct ifaliasreq ifra;
|
||||
struct ifreq ifr;
|
||||
|
||||
strncpy(ifra.ifra_name, ifname, sizeof(ifra.ifra_name));
|
||||
SET_SA_FAMILY(ifra.ifra_addr, AF_INET);
|
||||
@ -957,6 +963,12 @@ sifaddr(u, o, h, m)
|
||||
((struct sockaddr_in *) &ifra.ifra_mask)->sin_addr.s_addr = m;
|
||||
} else
|
||||
BZERO(&ifra.ifra_mask, sizeof(ifra.ifra_mask));
|
||||
BZERO(&ifr, sizeof(ifr));
|
||||
strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
|
||||
if (ioctl(sockfd, SIOCDIFADDR, (caddr_t) &ifr) < 0) {
|
||||
if (errno != EADDRNOTAVAIL)
|
||||
syslog(LOG_WARNING, "Couldn't remove interface address: %m");
|
||||
}
|
||||
if (ioctl(sockfd, SIOCAIFADDR, (caddr_t) &ifra) < 0) {
|
||||
if (errno != EEXIST) {
|
||||
syslog(LOG_ERR, "Couldn't set interface address: %m");
|
||||
|
Loading…
Reference in New Issue
Block a user