- Add static for functions and variables with internal linkage.
- Quiet down -Wcast-align warnings. - Remove dead code. There is no functionality change.
This commit is contained in:
parent
ee5d5813c0
commit
1296e1b0b7
@ -100,7 +100,7 @@ struct ifc { /* Configuration of an interface */
|
||||
TAILQ_HEAD(, iff) ifc_iff_head; /* list of filters */
|
||||
int ifc_joined; /* joined to ff02::9 */
|
||||
};
|
||||
TAILQ_HEAD(, ifc) ifc_head = TAILQ_HEAD_INITIALIZER(ifc_head);
|
||||
static TAILQ_HEAD(, ifc) ifc_head = TAILQ_HEAD_INITIALIZER(ifc_head);
|
||||
|
||||
struct ifac { /* Adddress associated to an interface */
|
||||
TAILQ_ENTRY(ifac) ifac_next;
|
||||
@ -120,21 +120,21 @@ struct iff { /* Filters for an interface */
|
||||
int iff_plen;
|
||||
};
|
||||
|
||||
struct ifc **index2ifc;
|
||||
unsigned int nindex2ifc;
|
||||
struct ifc *loopifcp = NULL; /* pointing to loopback */
|
||||
static struct ifc **index2ifc;
|
||||
static unsigned int nindex2ifc;
|
||||
static struct ifc *loopifcp = NULL; /* pointing to loopback */
|
||||
#ifdef HAVE_POLL_H
|
||||
struct pollfd set[2];
|
||||
static struct pollfd set[2];
|
||||
#else
|
||||
fd_set *sockvecp; /* vector to select() for receiving */
|
||||
fd_set *recvecp;
|
||||
int fdmasks;
|
||||
int maxfd; /* maximum fd for select() */
|
||||
static fd_set *sockvecp; /* vector to select() for receiving */
|
||||
static fd_set *recvecp;
|
||||
static int fdmasks;
|
||||
static int maxfd; /* maximum fd for select() */
|
||||
#endif
|
||||
int rtsock; /* the routing socket */
|
||||
int ripsock; /* socket to send/receive RIP datagram */
|
||||
static int rtsock; /* the routing socket */
|
||||
static int ripsock; /* socket to send/receive RIP datagram */
|
||||
|
||||
struct rip6 *ripbuf; /* packet buffer for sending */
|
||||
static struct rip6 *ripbuf; /* packet buffer for sending */
|
||||
|
||||
/*
|
||||
* Maintain the routes in a linked list. When the number of the routes
|
||||
@ -159,41 +159,43 @@ struct riprt {
|
||||
time_t rrt_t; /* when the route validated */
|
||||
int rrt_index; /* ifindex from which this route got */
|
||||
};
|
||||
TAILQ_HEAD(, riprt) riprt_head = TAILQ_HEAD_INITIALIZER(riprt_head);
|
||||
static TAILQ_HEAD(, riprt) riprt_head = TAILQ_HEAD_INITIALIZER(riprt_head);
|
||||
|
||||
int dflag = 0; /* debug flag */
|
||||
int qflag = 0; /* quiet flag */
|
||||
int nflag = 0; /* don't update kernel routing table */
|
||||
int aflag = 0; /* age out even the statically defined routes */
|
||||
int hflag = 0; /* don't split horizon */
|
||||
int lflag = 0; /* exchange site local routes */
|
||||
int Pflag = 0; /* don't age out routes with RTF_PROTO[123] */
|
||||
int Qflag = RTF_PROTO2; /* set RTF_PROTO[123] flag to routes by RIPng */
|
||||
int sflag = 0; /* announce static routes w/ split horizon */
|
||||
int Sflag = 0; /* announce static routes to every interface */
|
||||
unsigned long routetag = 0; /* route tag attached on originating case */
|
||||
static int dflag = 0; /* debug flag */
|
||||
static int qflag = 0; /* quiet flag */
|
||||
static int nflag = 0; /* don't update kernel routing table */
|
||||
static int aflag = 0; /* age out even the statically defined routes */
|
||||
static int hflag = 0; /* don't split horizon */
|
||||
static int lflag = 0; /* exchange site local routes */
|
||||
static int Pflag = 0; /* don't age out routes with RTF_PROTO[123] */
|
||||
static int Qflag = RTF_PROTO2; /* set RTF_PROTO[123] flag to routes by RIPng */
|
||||
static int sflag = 0; /* announce static routes w/ split horizon */
|
||||
static int Sflag = 0; /* announce static routes to every interface */
|
||||
static unsigned long routetag = 0; /* route tag attached on originating case */
|
||||
|
||||
char *filter[MAXFILTER];
|
||||
int filtertype[MAXFILTER];
|
||||
int nfilter = 0;
|
||||
static char *filter[MAXFILTER];
|
||||
static int filtertype[MAXFILTER];
|
||||
static int nfilter = 0;
|
||||
|
||||
pid_t pid;
|
||||
static pid_t pid;
|
||||
|
||||
struct sockaddr_storage ripsin;
|
||||
static struct sockaddr_storage ripsin;
|
||||
|
||||
int interval = 1;
|
||||
time_t nextalarm = 0;
|
||||
time_t sup_trig_update = 0;
|
||||
static int interval = 1;
|
||||
static time_t nextalarm = 0;
|
||||
#if 0
|
||||
static time_t sup_trig_update = 0;
|
||||
#endif
|
||||
|
||||
FILE *rtlog = NULL;
|
||||
static FILE *rtlog = NULL;
|
||||
|
||||
int logopened = 0;
|
||||
static int logopened = 0;
|
||||
|
||||
static int seq = 0;
|
||||
|
||||
volatile sig_atomic_t seenalrm;
|
||||
volatile sig_atomic_t seenquit;
|
||||
volatile sig_atomic_t seenusr1;
|
||||
static volatile sig_atomic_t seenalrm;
|
||||
static volatile sig_atomic_t seenquit;
|
||||
static volatile sig_atomic_t seenusr1;
|
||||
|
||||
#define RRTF_AGGREGATE 0x08000000
|
||||
#define RRTF_NOADVERTISE 0x10000000
|
||||
@ -202,66 +204,67 @@ volatile sig_atomic_t seenusr1;
|
||||
#define RRTF_CHANGED 0x80000000
|
||||
|
||||
int main(int, char **);
|
||||
void sighandler(int);
|
||||
void ripalarm(void);
|
||||
void riprecv(void);
|
||||
void ripsend(struct ifc *, struct sockaddr_in6 *, int);
|
||||
int out_filter(struct riprt *, struct ifc *);
|
||||
void init(void);
|
||||
void sockopt(struct ifc *);
|
||||
void ifconfig(void);
|
||||
int ifconfig1(const char *, const struct sockaddr *, struct ifc *, int);
|
||||
void rtrecv(void);
|
||||
int rt_del(const struct sockaddr_in6 *, const struct sockaddr_in6 *,
|
||||
static void sighandler(int);
|
||||
static void ripalarm(void);
|
||||
static void riprecv(void);
|
||||
static void ripsend(struct ifc *, struct sockaddr_in6 *, int);
|
||||
static int out_filter(struct riprt *, struct ifc *);
|
||||
static void init(void);
|
||||
static void ifconfig(void);
|
||||
static int ifconfig1(const char *, const struct sockaddr *, struct ifc *, int);
|
||||
static void rtrecv(void);
|
||||
static int rt_del(const struct sockaddr_in6 *, const struct sockaddr_in6 *,
|
||||
const struct sockaddr_in6 *);
|
||||
int rt_deladdr(struct ifc *, const struct sockaddr_in6 *,
|
||||
static int rt_deladdr(struct ifc *, const struct sockaddr_in6 *,
|
||||
const struct sockaddr_in6 *);
|
||||
void filterconfig(void);
|
||||
int getifmtu(int);
|
||||
const char *rttypes(struct rt_msghdr *);
|
||||
const char *rtflags(struct rt_msghdr *);
|
||||
const char *ifflags(int);
|
||||
int ifrt(struct ifc *, int);
|
||||
void ifrt_p2p(struct ifc *, int);
|
||||
void applymask(struct in6_addr *, struct in6_addr *);
|
||||
void applyplen(struct in6_addr *, int);
|
||||
void ifrtdump(int);
|
||||
void ifdump(int);
|
||||
void ifdump0(FILE *, const struct ifc *);
|
||||
void ifremove(int);
|
||||
void rtdump(int);
|
||||
void rt_entry(struct rt_msghdr *, int);
|
||||
void rtdexit(void);
|
||||
void riprequest(struct ifc *, struct netinfo6 *, int,
|
||||
static void filterconfig(void);
|
||||
static int getifmtu(int);
|
||||
static const char *rttypes(struct rt_msghdr *);
|
||||
static const char *rtflags(struct rt_msghdr *);
|
||||
static const char *ifflags(int);
|
||||
static int ifrt(struct ifc *, int);
|
||||
static void ifrt_p2p(struct ifc *, int);
|
||||
static void applyplen(struct in6_addr *, int);
|
||||
static void ifrtdump(int);
|
||||
static void ifdump(int);
|
||||
static void ifdump0(FILE *, const struct ifc *);
|
||||
static void ifremove(int);
|
||||
static void rtdump(int);
|
||||
static void rt_entry(struct rt_msghdr *, int);
|
||||
static void rtdexit(void);
|
||||
static void riprequest(struct ifc *, struct netinfo6 *, int,
|
||||
struct sockaddr_in6 *);
|
||||
void ripflush(struct ifc *, struct sockaddr_in6 *, int, struct netinfo6 *np);
|
||||
void sendrequest(struct ifc *);
|
||||
int sin6mask2len(const struct sockaddr_in6 *);
|
||||
int mask2len(const struct in6_addr *, int);
|
||||
int sendpacket(struct sockaddr_in6 *, int);
|
||||
int addroute(struct riprt *, const struct in6_addr *, struct ifc *);
|
||||
int delroute(struct netinfo6 *, struct in6_addr *);
|
||||
struct in6_addr *getroute(struct netinfo6 *, struct in6_addr *);
|
||||
void krtread(int);
|
||||
int tobeadv(struct riprt *, struct ifc *);
|
||||
char *allocopy(char *);
|
||||
char *hms(void);
|
||||
const char *inet6_n2p(const struct in6_addr *);
|
||||
struct ifac *ifa_match(const struct ifc *, const struct in6_addr *, int);
|
||||
struct in6_addr *plen2mask(int);
|
||||
struct riprt *rtsearch(struct netinfo6 *);
|
||||
int ripinterval(int);
|
||||
time_t ripsuptrig(void);
|
||||
void fatal(const char *, ...)
|
||||
static void ripflush(struct ifc *, struct sockaddr_in6 *, int, struct netinfo6 *np);
|
||||
static void sendrequest(struct ifc *);
|
||||
static int sin6mask2len(const struct sockaddr_in6 *);
|
||||
static int mask2len(const struct in6_addr *, int);
|
||||
static int sendpacket(struct sockaddr_in6 *, int);
|
||||
static int addroute(struct riprt *, const struct in6_addr *, struct ifc *);
|
||||
static int delroute(struct netinfo6 *, struct in6_addr *);
|
||||
#if 0
|
||||
static struct in6_addr *getroute(struct netinfo6 *, struct in6_addr *);
|
||||
#endif
|
||||
static void krtread(int);
|
||||
static int tobeadv(struct riprt *, struct ifc *);
|
||||
static char *allocopy(char *);
|
||||
static char *hms(void);
|
||||
static const char *inet6_n2p(const struct in6_addr *);
|
||||
static struct ifac *ifa_match(const struct ifc *, const struct in6_addr *, int);
|
||||
static struct in6_addr *plen2mask(int);
|
||||
static struct riprt *rtsearch(struct netinfo6 *);
|
||||
static int ripinterval(int);
|
||||
#if 0
|
||||
static time_t ripsuptrig(void);
|
||||
#endif
|
||||
static void fatal(const char *, ...)
|
||||
__attribute__((__format__(__printf__, 1, 2)));
|
||||
void trace(int, const char *, ...)
|
||||
static void trace(int, const char *, ...)
|
||||
__attribute__((__format__(__printf__, 2, 3)));
|
||||
void tracet(int, const char *, ...)
|
||||
static void tracet(int, const char *, ...)
|
||||
__attribute__((__format__(__printf__, 2, 3)));
|
||||
unsigned int if_maxindex(void);
|
||||
struct ifc *ifc_find(char *);
|
||||
struct iff *iff_find(struct ifc *, int);
|
||||
void setindex2ifc(int, struct ifc *);
|
||||
static struct ifc *ifc_find(char *);
|
||||
static struct iff *iff_find(struct ifc *, int);
|
||||
static void setindex2ifc(int, struct ifc *);
|
||||
|
||||
#define MALLOC(type) ((type *)malloc(sizeof(type)))
|
||||
|
||||
@ -523,7 +526,7 @@ main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
sighandler(int signo)
|
||||
{
|
||||
|
||||
@ -547,7 +550,7 @@ sighandler(int signo)
|
||||
* gracefully exits after resetting sockopts.
|
||||
*/
|
||||
/* ARGSUSED */
|
||||
void
|
||||
static void
|
||||
rtdexit(void)
|
||||
{
|
||||
struct riprt *rrt;
|
||||
@ -574,7 +577,7 @@ rtdexit(void)
|
||||
* routes more precisely.
|
||||
*/
|
||||
/* ARGSUSED */
|
||||
void
|
||||
static void
|
||||
ripalarm(void)
|
||||
{
|
||||
struct ifc *ifcp;
|
||||
@ -602,7 +605,7 @@ ripalarm(void)
|
||||
alarm(ripinterval(SUPPLY_INTERVAL6));
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
init(void)
|
||||
{
|
||||
int error;
|
||||
@ -752,7 +755,7 @@ init(void)
|
||||
/*
|
||||
* ripflush flushes the rip datagram stored in the rip buffer
|
||||
*/
|
||||
void
|
||||
static void
|
||||
ripflush(struct ifc *ifcp, struct sockaddr_in6 *sin6, int nrt, struct netinfo6 *np)
|
||||
{
|
||||
int i;
|
||||
@ -807,7 +810,7 @@ ripflush(struct ifc *ifcp, struct sockaddr_in6 *sin6, int nrt, struct netinfo6 *
|
||||
/*
|
||||
* Generate RIP6_RESPONSE packets and send them.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
ripsend(struct ifc *ifcp, struct sockaddr_in6 *sin6, int flag)
|
||||
{
|
||||
struct riprt *rrt;
|
||||
@ -948,7 +951,7 @@ ripsend(struct ifc *ifcp, struct sockaddr_in6 *sin6, int flag)
|
||||
/*
|
||||
* outbound filter logic, per-route/interface.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
out_filter(struct riprt *rrt, struct ifc *ifcp)
|
||||
{
|
||||
struct iff *iffp;
|
||||
@ -1019,7 +1022,7 @@ out_filter(struct riprt *rrt, struct ifc *ifcp)
|
||||
* Determine if the route is to be advertised on the specified interface.
|
||||
* It checks options specified in the arguments and the split horizon rule.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
tobeadv(struct riprt *rrt, struct ifc *ifcp)
|
||||
{
|
||||
|
||||
@ -1044,14 +1047,14 @@ tobeadv(struct riprt *rrt, struct ifc *ifcp)
|
||||
/*
|
||||
* Send a rip packet actually.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
sendpacket(struct sockaddr_in6 *sin6, int len)
|
||||
{
|
||||
struct msghdr m;
|
||||
struct cmsghdr *cm;
|
||||
struct iovec iov[2];
|
||||
u_char cmsgbuf[256];
|
||||
struct in6_pktinfo *pi;
|
||||
u_char cmsgbuf[256];
|
||||
int idx;
|
||||
struct sockaddr_in6 sincopy;
|
||||
|
||||
@ -1077,14 +1080,14 @@ sendpacket(struct sockaddr_in6 *sin6, int len)
|
||||
m.msg_controllen = 0;
|
||||
} else {
|
||||
memset(cmsgbuf, 0, sizeof(cmsgbuf));
|
||||
cm = (struct cmsghdr *)cmsgbuf;
|
||||
cm = (struct cmsghdr *)(void *)cmsgbuf;
|
||||
m.msg_control = (caddr_t)cm;
|
||||
m.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo));
|
||||
|
||||
cm->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
|
||||
cm->cmsg_level = IPPROTO_IPV6;
|
||||
cm->cmsg_type = IPV6_PKTINFO;
|
||||
pi = (struct in6_pktinfo *)CMSG_DATA(cm);
|
||||
pi = (struct in6_pktinfo *)(void *)CMSG_DATA(cm);
|
||||
memset(&pi->ipi6_addr, 0, sizeof(pi->ipi6_addr)); /*::*/
|
||||
pi->ipi6_ifindex = idx;
|
||||
}
|
||||
@ -1101,7 +1104,7 @@ sendpacket(struct sockaddr_in6 *sin6, int len)
|
||||
* Receive and process RIP packets. Update the routes/kernel forwarding
|
||||
* table if necessary.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
riprecv(void)
|
||||
{
|
||||
struct ifc *ifcp, *ic;
|
||||
@ -1133,7 +1136,7 @@ riprecv(void)
|
||||
iov[0].iov_len = sizeof(buf);
|
||||
m.msg_iov = iov;
|
||||
m.msg_iovlen = 1;
|
||||
cm = (struct cmsghdr *)cmsgbuf;
|
||||
cm = (struct cmsghdr *)(void *)cmsgbuf;
|
||||
m.msg_control = (caddr_t)cm;
|
||||
m.msg_controllen = sizeof(cmsgbuf);
|
||||
m.msg_flags = 0;
|
||||
@ -1154,7 +1157,7 @@ riprecv(void)
|
||||
"invalid cmsg length for IPV6_PKTINFO\n");
|
||||
return;
|
||||
}
|
||||
pi = (struct in6_pktinfo *)(CMSG_DATA(cm));
|
||||
pi = (struct in6_pktinfo *)(void *)CMSG_DATA(cm);
|
||||
idx = pi->ipi6_ifindex;
|
||||
break;
|
||||
case IPV6_HOPLIMIT:
|
||||
@ -1163,7 +1166,7 @@ riprecv(void)
|
||||
"invalid cmsg length for IPV6_HOPLIMIT\n");
|
||||
return;
|
||||
}
|
||||
hlimp = (int *)CMSG_DATA(cm);
|
||||
hlimp = (int *)(void *)CMSG_DATA(cm);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1188,7 +1191,7 @@ riprecv(void)
|
||||
nh = fsock.sin6_addr;
|
||||
nn = (len - sizeof(struct rip6) + sizeof(struct netinfo6)) /
|
||||
sizeof(struct netinfo6);
|
||||
rp = (struct rip6 *)buf;
|
||||
rp = (struct rip6 *)(void *)buf;
|
||||
np = rp->rip6_nets;
|
||||
|
||||
if (rp->rip6_vers != RIP6_VERSION) {
|
||||
@ -1449,7 +1452,7 @@ riprecv(void)
|
||||
/*
|
||||
* Send all routes request packet to the specified interface.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
sendrequest(struct ifc *ifcp)
|
||||
{
|
||||
struct netinfo6 *np;
|
||||
@ -1477,7 +1480,7 @@ sendrequest(struct ifc *ifcp)
|
||||
/*
|
||||
* Process a RIP6_REQUEST packet.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
riprequest(struct ifc *ifcp,
|
||||
struct netinfo6 *np,
|
||||
int nn,
|
||||
@ -1508,7 +1511,7 @@ riprequest(struct ifc *ifcp,
|
||||
/*
|
||||
* Get information of each interface.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
ifconfig(void)
|
||||
{
|
||||
struct ifaddrs *ifap, *ifa;
|
||||
@ -1583,7 +1586,7 @@ ifconfig(void)
|
||||
freeifaddrs(ifap);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
ifconfig1(const char *name,
|
||||
const struct sockaddr *sa,
|
||||
struct ifc *ifcp,
|
||||
@ -1595,7 +1598,7 @@ ifconfig1(const char *name,
|
||||
int plen;
|
||||
char buf[BUFSIZ];
|
||||
|
||||
sin6 = (const struct sockaddr_in6 *)sa;
|
||||
sin6 = (const struct sockaddr_in6 *)(const void *)sa;
|
||||
if (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr) && !lflag)
|
||||
return (-1);
|
||||
ifr.ifr_addr = *sin6;
|
||||
@ -1663,7 +1666,7 @@ ifconfig1(const char *name,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
ifremove(int ifindex)
|
||||
{
|
||||
struct ifc *ifcp;
|
||||
@ -1691,7 +1694,7 @@ ifremove(int ifindex)
|
||||
* Receive and process routing messages.
|
||||
* Update interface information as necesssary.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
rtrecv(void)
|
||||
{
|
||||
char buf[BUFSIZ];
|
||||
@ -1730,33 +1733,34 @@ rtrecv(void)
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
for (p = buf; p - buf < len; p += ((struct rt_msghdr *)p)->rtm_msglen) {
|
||||
if (((struct rt_msghdr *)p)->rtm_version != RTM_VERSION)
|
||||
for (p = buf; p - buf < len; p +=
|
||||
((struct rt_msghdr *)(void *)p)->rtm_msglen) {
|
||||
if (((struct rt_msghdr *)(void *)p)->rtm_version != RTM_VERSION)
|
||||
continue;
|
||||
|
||||
/* safety against bogus message */
|
||||
if (((struct rt_msghdr *)p)->rtm_msglen <= 0) {
|
||||
if (((struct rt_msghdr *)(void *)p)->rtm_msglen <= 0) {
|
||||
trace(1, "bogus rtmsg: length=%d\n",
|
||||
((struct rt_msghdr *)p)->rtm_msglen);
|
||||
((struct rt_msghdr *)(void *)p)->rtm_msglen);
|
||||
break;
|
||||
}
|
||||
rtm = NULL;
|
||||
ifam = NULL;
|
||||
ifm = NULL;
|
||||
switch (((struct rt_msghdr *)p)->rtm_type) {
|
||||
switch (((struct rt_msghdr *)(void *)p)->rtm_type) {
|
||||
case RTM_NEWADDR:
|
||||
case RTM_DELADDR:
|
||||
ifam = (struct ifa_msghdr *)p;
|
||||
ifam = (struct ifa_msghdr *)(void *)p;
|
||||
addrs = ifam->ifam_addrs;
|
||||
q = (char *)(ifam + 1);
|
||||
break;
|
||||
case RTM_IFINFO:
|
||||
ifm = (struct if_msghdr *)p;
|
||||
ifm = (struct if_msghdr *)(void *)p;
|
||||
addrs = ifm->ifm_addrs;
|
||||
q = (char *)(ifm + 1);
|
||||
break;
|
||||
case RTM_IFANNOUNCE:
|
||||
ifan = (struct if_announcemsghdr *)p;
|
||||
ifan = (struct if_announcemsghdr *)(void *)p;
|
||||
switch (ifan->ifan_what) {
|
||||
case IFAN_ARRIVAL:
|
||||
iface++;
|
||||
@ -1768,7 +1772,7 @@ rtrecv(void)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rtm = (struct rt_msghdr *)p;
|
||||
rtm = (struct rt_msghdr *)(void *)p;
|
||||
addrs = rtm->rtm_addrs;
|
||||
q = (char *)(rtm + 1);
|
||||
if (rtm->rtm_version != RTM_VERSION) {
|
||||
@ -1788,16 +1792,16 @@ rtrecv(void)
|
||||
memset(&rta, 0, sizeof(rta));
|
||||
for (i = 0; i < RTAX_MAX; i++) {
|
||||
if (addrs & (1 << i)) {
|
||||
rta[i] = (struct sockaddr_in6 *)q;
|
||||
rta[i] = (struct sockaddr_in6 *)(void *)q;
|
||||
q += ROUNDUP(rta[i]->sin6_len);
|
||||
}
|
||||
}
|
||||
|
||||
trace(1, "rtsock: %s (addrs=%x)\n",
|
||||
rttypes((struct rt_msghdr *)p), addrs);
|
||||
rttypes((struct rt_msghdr *)(void *)p), addrs);
|
||||
if (dflag >= 2) {
|
||||
for (i = 0;
|
||||
i < ((struct rt_msghdr *)p)->rtm_msglen;
|
||||
i < ((struct rt_msghdr *)(void *)p)->rtm_msglen;
|
||||
i++) {
|
||||
fprintf(stderr, "%02x ", p[i] & 0xff);
|
||||
if (i % 16 == 15) fprintf(stderr, "\n");
|
||||
@ -1811,7 +1815,7 @@ rtrecv(void)
|
||||
* We may be able to optimize by using ifm->ifm_index or
|
||||
* ifam->ifam_index. For simplicity we don't do that here.
|
||||
*/
|
||||
switch (((struct rt_msghdr *)p)->rtm_type) {
|
||||
switch (((struct rt_msghdr *)(void *)p)->rtm_type) {
|
||||
case RTM_NEWADDR:
|
||||
case RTM_IFINFO:
|
||||
iface++;
|
||||
@ -1852,7 +1856,7 @@ rtrecv(void)
|
||||
#endif
|
||||
|
||||
/* hard ones */
|
||||
switch (((struct rt_msghdr *)p)->rtm_type) {
|
||||
switch (((struct rt_msghdr *)(void *)p)->rtm_type) {
|
||||
case RTM_NEWADDR:
|
||||
case RTM_IFINFO:
|
||||
case RTM_ADD:
|
||||
@ -1940,7 +1944,7 @@ rtrecv(void)
|
||||
/*
|
||||
* remove specified route from the internal routing table.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
rt_del(const struct sockaddr_in6 *sdst,
|
||||
const struct sockaddr_in6 *sgw,
|
||||
const struct sockaddr_in6 *smask)
|
||||
@ -2038,7 +2042,7 @@ rt_del(const struct sockaddr_in6 *sdst,
|
||||
/*
|
||||
* remove specified address from internal interface/routing table.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
rt_deladdr(struct ifc *ifcp,
|
||||
const struct sockaddr_in6 *sifa,
|
||||
const struct sockaddr_in6 *smask)
|
||||
@ -2139,7 +2143,7 @@ rt_deladdr(struct ifc *ifcp,
|
||||
* Get each interface address and put those interface routes to the route
|
||||
* list.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
ifrt(struct ifc *ifcp, int again)
|
||||
{
|
||||
struct ifac *ifac;
|
||||
@ -2250,7 +2254,7 @@ ifrt(struct ifc *ifcp, int again)
|
||||
* you pick one. it looks that gated behavior fits best with BSDs,
|
||||
* since BSD kernels do not look at prefix length on p2p interfaces.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
ifrt_p2p(struct ifc *ifcp, int again)
|
||||
{
|
||||
struct ifac *ifac;
|
||||
@ -2414,7 +2418,7 @@ ifrt_p2p(struct ifc *ifcp, int again)
|
||||
#undef P2PADVERT_MAX
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
getifmtu(int ifindex)
|
||||
{
|
||||
int mib[6];
|
||||
@ -2441,7 +2445,7 @@ getifmtu(int ifindex)
|
||||
fatal("sysctl NET_RT_IFLIST");
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
ifm = (struct if_msghdr *)buf;
|
||||
ifm = (struct if_msghdr *)(void *)buf;
|
||||
mtu = ifm->ifm_data.ifi_mtu;
|
||||
if (ifindex != ifm->ifm_index) {
|
||||
fatal("ifindex does not match with ifm_index");
|
||||
@ -2451,7 +2455,7 @@ getifmtu(int ifindex)
|
||||
return mtu;
|
||||
}
|
||||
|
||||
const char *
|
||||
static const char *
|
||||
rttypes(struct rt_msghdr *rtm)
|
||||
{
|
||||
#define RTTYPE(s, f) \
|
||||
@ -2486,7 +2490,7 @@ do { \
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *
|
||||
static const char *
|
||||
rtflags(struct rt_msghdr *rtm)
|
||||
{
|
||||
static char buf[BUFSIZ];
|
||||
@ -2546,7 +2550,7 @@ do { \
|
||||
return buf;
|
||||
}
|
||||
|
||||
const char *
|
||||
static const char *
|
||||
ifflags(int flags)
|
||||
{
|
||||
static char buf[BUFSIZ];
|
||||
@ -2582,7 +2586,7 @@ do { \
|
||||
return buf;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
krtread(int again)
|
||||
{
|
||||
int mib[6];
|
||||
@ -2631,13 +2635,13 @@ krtread(int again)
|
||||
|
||||
lim = buf + msize;
|
||||
for (p = buf; p < lim; p += rtm->rtm_msglen) {
|
||||
rtm = (struct rt_msghdr *)p;
|
||||
rtm = (struct rt_msghdr *)(void *)p;
|
||||
rt_entry(rtm, again);
|
||||
}
|
||||
free(buf);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
rt_entry(struct rt_msghdr *rtm, int again)
|
||||
{
|
||||
struct sockaddr_in6 *sin6_dst, *sin6_gw, *sin6_mask;
|
||||
@ -2674,22 +2678,22 @@ rt_entry(struct rt_msghdr *rtm, int again)
|
||||
/* Destination */
|
||||
if ((rtm->rtm_addrs & RTA_DST) == 0)
|
||||
return; /* ignore routes without destination address */
|
||||
sin6_dst = (struct sockaddr_in6 *)rtmp;
|
||||
sin6_dst = (struct sockaddr_in6 *)(void *)rtmp;
|
||||
rtmp += ROUNDUP(sin6_dst->sin6_len);
|
||||
if (rtm->rtm_addrs & RTA_GATEWAY) {
|
||||
sin6_gw = (struct sockaddr_in6 *)rtmp;
|
||||
sin6_gw = (struct sockaddr_in6 *)(void *)rtmp;
|
||||
rtmp += ROUNDUP(sin6_gw->sin6_len);
|
||||
}
|
||||
if (rtm->rtm_addrs & RTA_NETMASK) {
|
||||
sin6_mask = (struct sockaddr_in6 *)rtmp;
|
||||
sin6_mask = (struct sockaddr_in6 *)(void *)rtmp;
|
||||
rtmp += ROUNDUP(sin6_mask->sin6_len);
|
||||
}
|
||||
if (rtm->rtm_addrs & RTA_GENMASK) {
|
||||
sin6_genmask = (struct sockaddr_in6 *)rtmp;
|
||||
sin6_genmask = (struct sockaddr_in6 *)(void *)rtmp;
|
||||
rtmp += ROUNDUP(sin6_genmask->sin6_len);
|
||||
}
|
||||
if (rtm->rtm_addrs & RTA_IFP) {
|
||||
sin6_ifp = (struct sockaddr_in6 *)rtmp;
|
||||
sin6_ifp = (struct sockaddr_in6 *)(void *)rtmp;
|
||||
rtmp += ROUNDUP(sin6_ifp->sin6_len);
|
||||
}
|
||||
|
||||
@ -2798,7 +2802,7 @@ rt_entry(struct rt_msghdr *rtm, int again)
|
||||
TAILQ_INSERT_HEAD(&riprt_head, rrt, rrt_next);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
addroute(struct riprt *rrt,
|
||||
const struct in6_addr *gw,
|
||||
struct ifc *ifcp)
|
||||
@ -2823,7 +2827,7 @@ addroute(struct riprt *rrt,
|
||||
return 0;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
rtm = (struct rt_msghdr *)buf;
|
||||
rtm = (struct rt_msghdr *)(void *)buf;
|
||||
rtm->rtm_type = RTM_ADD;
|
||||
rtm->rtm_version = RTM_VERSION;
|
||||
rtm->rtm_seq = ++seq;
|
||||
@ -2833,24 +2837,24 @@ addroute(struct riprt *rrt,
|
||||
rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
|
||||
rtm->rtm_rmx.rmx_hopcount = np->rip6_metric - 1;
|
||||
rtm->rtm_inits = RTV_HOPCOUNT;
|
||||
sin6 = (struct sockaddr_in6 *)&buf[sizeof(struct rt_msghdr)];
|
||||
sin6 = (struct sockaddr_in6 *)(void *)&buf[sizeof(struct rt_msghdr)];
|
||||
/* Destination */
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = np->rip6_dest;
|
||||
sin6 = (struct sockaddr_in6 *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
sin6 = (struct sockaddr_in6 *)(void *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
/* Gateway */
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = *gw;
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
|
||||
sin6->sin6_scope_id = ifcp->ifc_index;
|
||||
sin6 = (struct sockaddr_in6 *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
sin6 = (struct sockaddr_in6 *)(void *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
/* Netmask */
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = *(plen2mask(np->rip6_plen));
|
||||
sin6 = (struct sockaddr_in6 *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
sin6 = (struct sockaddr_in6 *)(void *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
|
||||
len = (char *)sin6 - (char *)buf;
|
||||
rtm->rtm_msglen = len;
|
||||
@ -2873,7 +2877,7 @@ addroute(struct riprt *rrt,
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
delroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
{
|
||||
u_char buf[BUFSIZ], buf2[BUFSIZ];
|
||||
@ -2891,7 +2895,7 @@ delroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
return 0;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
rtm = (struct rt_msghdr *)buf;
|
||||
rtm = (struct rt_msghdr *)(void *)buf;
|
||||
rtm->rtm_type = RTM_DELETE;
|
||||
rtm->rtm_version = RTM_VERSION;
|
||||
rtm->rtm_seq = ++seq;
|
||||
@ -2901,22 +2905,22 @@ delroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
if (np->rip6_plen == sizeof(struct in6_addr) * 8)
|
||||
rtm->rtm_flags |= RTF_HOST;
|
||||
rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
|
||||
sin6 = (struct sockaddr_in6 *)&buf[sizeof(struct rt_msghdr)];
|
||||
sin6 = (struct sockaddr_in6 *)(void *)&buf[sizeof(struct rt_msghdr)];
|
||||
/* Destination */
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = np->rip6_dest;
|
||||
sin6 = (struct sockaddr_in6 *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
sin6 = (struct sockaddr_in6 *)(void *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
/* Gateway */
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = *gw;
|
||||
sin6 = (struct sockaddr_in6 *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
sin6 = (struct sockaddr_in6 *)(void *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
/* Netmask */
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = *(plen2mask(np->rip6_plen));
|
||||
sin6 = (struct sockaddr_in6 *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
sin6 = (struct sockaddr_in6 *)(void *)((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
|
||||
len = (char *)sin6 - (char *)buf;
|
||||
rtm->rtm_msglen = len;
|
||||
@ -2939,7 +2943,8 @@ delroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct in6_addr *
|
||||
#if 0
|
||||
static struct in6_addr *
|
||||
getroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
{
|
||||
u_char buf[BUFSIZ];
|
||||
@ -2948,7 +2953,7 @@ getroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
struct rt_msghdr *rtm;
|
||||
struct sockaddr_in6 *sin6;
|
||||
|
||||
rtm = (struct rt_msghdr *)buf;
|
||||
rtm = (struct rt_msghdr *)(void *)buf;
|
||||
len = sizeof(struct rt_msghdr) + sizeof(struct sockaddr_in6);
|
||||
memset(rtm, 0, len);
|
||||
rtm->rtm_type = RTM_GET;
|
||||
@ -2957,7 +2962,7 @@ getroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
rtm->rtm_seq = myseq;
|
||||
rtm->rtm_addrs = RTA_DST;
|
||||
rtm->rtm_msglen = len;
|
||||
sin6 = (struct sockaddr_in6 *)&buf[sizeof(struct rt_msghdr)];
|
||||
sin6 = (struct sockaddr_in6 *)(void *)&buf[sizeof(struct rt_msghdr)];
|
||||
sin6->sin6_len = sizeof(struct sockaddr_in6);
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_addr = np->rip6_dest;
|
||||
@ -2972,11 +2977,11 @@ getroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
perror("read from rtsock");
|
||||
exit(1);
|
||||
}
|
||||
rtm = (struct rt_msghdr *)buf;
|
||||
rtm = (struct rt_msghdr *)(void *)buf;
|
||||
} while (rtm->rtm_seq != myseq || rtm->rtm_pid != pid);
|
||||
sin6 = (struct sockaddr_in6 *)&buf[sizeof(struct rt_msghdr)];
|
||||
sin6 = (struct sockaddr_in6 *)(void *)&buf[sizeof(struct rt_msghdr)];
|
||||
if (rtm->rtm_addrs & RTA_DST) {
|
||||
sin6 = (struct sockaddr_in6 *)
|
||||
sin6 = (struct sockaddr_in6 *)(void *)
|
||||
((char *)sin6 + ROUNDUP(sin6->sin6_len));
|
||||
}
|
||||
if (rtm->rtm_addrs & RTA_GATEWAY) {
|
||||
@ -2985,8 +2990,9 @@ getroute(struct netinfo6 *np, struct in6_addr *gw)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
const char *
|
||||
static const char *
|
||||
inet6_n2p(const struct in6_addr *p)
|
||||
{
|
||||
static char buf[BUFSIZ];
|
||||
@ -2994,7 +3000,7 @@ inet6_n2p(const struct in6_addr *p)
|
||||
return inet_ntop(AF_INET6, (const void *)p, buf, sizeof(buf));
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
ifrtdump(int sig)
|
||||
{
|
||||
|
||||
@ -3002,7 +3008,7 @@ ifrtdump(int sig)
|
||||
rtdump(sig);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
ifdump(int sig)
|
||||
{
|
||||
struct ifc *ifcp;
|
||||
@ -3041,7 +3047,7 @@ ifdump(int sig)
|
||||
fclose(dump);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
ifdump0(FILE *dump, const struct ifc *ifcp)
|
||||
{
|
||||
struct ifac *ifac;
|
||||
@ -3097,7 +3103,7 @@ ifdump0(FILE *dump, const struct ifc *ifcp)
|
||||
fprintf(dump, "\n");
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
rtdump(int sig)
|
||||
{
|
||||
struct riprt *rrt;
|
||||
@ -3146,7 +3152,7 @@ rtdump(int sig)
|
||||
* syntax: -A 5f09:c400::/32,ef0,ef1 (aggregate)
|
||||
* -O 5f09:c400::/32,ef0,ef1 (only when match)
|
||||
*/
|
||||
void
|
||||
static void
|
||||
filterconfig(void)
|
||||
{
|
||||
int i;
|
||||
@ -3277,7 +3283,7 @@ filterconfig(void)
|
||||
* Returns a pointer to ifac whose address and prefix length matches
|
||||
* with the address and prefix length specified in the arguments.
|
||||
*/
|
||||
struct ifac *
|
||||
static struct ifac *
|
||||
ifa_match(const struct ifc *ifcp,
|
||||
const struct in6_addr *ia,
|
||||
int plen)
|
||||
@ -3298,7 +3304,7 @@ ifa_match(const struct ifc *ifcp,
|
||||
* matches with the address and prefix length found in the argument.
|
||||
* Note: This is not a rtalloc(). Therefore exact match is necessary.
|
||||
*/
|
||||
struct riprt *
|
||||
static struct riprt *
|
||||
rtsearch(struct netinfo6 *np)
|
||||
{
|
||||
struct riprt *rrt;
|
||||
@ -3313,7 +3319,7 @@ rtsearch(struct netinfo6 *np)
|
||||
return (rrt);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
sin6mask2len(const struct sockaddr_in6 *sin6)
|
||||
{
|
||||
|
||||
@ -3321,7 +3327,7 @@ sin6mask2len(const struct sockaddr_in6 *sin6)
|
||||
sin6->sin6_len - offsetof(struct sockaddr_in6, sin6_addr));
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
mask2len(const struct in6_addr *addr, int lenlim)
|
||||
{
|
||||
int i = 0, j;
|
||||
@ -3348,22 +3354,11 @@ mask2len(const struct in6_addr *addr, int lenlim)
|
||||
return i;
|
||||
}
|
||||
|
||||
void
|
||||
applymask(struct in6_addr *addr, struct in6_addr *mask)
|
||||
{
|
||||
int i;
|
||||
u_long *p, *q;
|
||||
|
||||
p = (u_long *)addr; q = (u_long *)mask;
|
||||
for (i = 0; i < 4; i++)
|
||||
*p++ &= *q++;
|
||||
}
|
||||
|
||||
static const u_char plent[8] = {
|
||||
0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe
|
||||
};
|
||||
|
||||
void
|
||||
static void
|
||||
applyplen(struct in6_addr *ia, int plen)
|
||||
{
|
||||
u_char *p;
|
||||
@ -3383,7 +3378,7 @@ static const int pl2m[9] = {
|
||||
0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff
|
||||
};
|
||||
|
||||
struct in6_addr *
|
||||
static struct in6_addr *
|
||||
plen2mask(int n)
|
||||
{
|
||||
static struct in6_addr ia;
|
||||
@ -3403,7 +3398,7 @@ plen2mask(int n)
|
||||
return &ia;
|
||||
}
|
||||
|
||||
char *
|
||||
static char *
|
||||
allocopy(char *p)
|
||||
{
|
||||
int len = strlen(p) + 1;
|
||||
@ -3418,7 +3413,7 @@ allocopy(char *p)
|
||||
return q;
|
||||
}
|
||||
|
||||
char *
|
||||
static char *
|
||||
hms(void)
|
||||
{
|
||||
static char buf[BUFSIZ];
|
||||
@ -3437,7 +3432,7 @@ hms(void)
|
||||
|
||||
#define RIPRANDDEV 1.0 /* 30 +- 15, max - min = 30 */
|
||||
|
||||
int
|
||||
static int
|
||||
ripinterval(int timer)
|
||||
{
|
||||
double r = rand();
|
||||
@ -3447,7 +3442,8 @@ ripinterval(int timer)
|
||||
return interval;
|
||||
}
|
||||
|
||||
time_t
|
||||
#if 0
|
||||
static time_t
|
||||
ripsuptrig(void)
|
||||
{
|
||||
time_t t;
|
||||
@ -3458,8 +3454,9 @@ ripsuptrig(void)
|
||||
sup_trig_update = time(NULL) + t;
|
||||
return t;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
static void
|
||||
#ifdef __STDC__
|
||||
fatal(const char *fmt, ...)
|
||||
#else
|
||||
@ -3486,7 +3483,7 @@ fatal(fmt, va_alist)
|
||||
rtdexit();
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
#ifdef __STDC__
|
||||
tracet(int level, const char *fmt, ...)
|
||||
#else
|
||||
@ -3522,7 +3519,7 @@ tracet(level, fmt, va_alist)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
#ifdef __STDC__
|
||||
trace(int level, const char *fmt, ...)
|
||||
#else
|
||||
@ -3557,22 +3554,7 @@ trace(level, fmt, va_alist)
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int
|
||||
if_maxindex(void)
|
||||
{
|
||||
struct if_nameindex *p, *p0;
|
||||
unsigned int max = 0;
|
||||
|
||||
p0 = if_nameindex();
|
||||
for (p = p0; p && p->if_index && p->if_name; p++) {
|
||||
if (max < p->if_index)
|
||||
max = p->if_index;
|
||||
}
|
||||
if_freenameindex(p0);
|
||||
return max;
|
||||
}
|
||||
|
||||
struct ifc *
|
||||
static struct ifc *
|
||||
ifc_find(char *name)
|
||||
{
|
||||
struct ifc *ifcp;
|
||||
@ -3584,7 +3566,7 @@ ifc_find(char *name)
|
||||
return (ifcp);
|
||||
}
|
||||
|
||||
struct iff *
|
||||
static struct iff *
|
||||
iff_find(struct ifc *ifcp, int type)
|
||||
{
|
||||
struct iff *iffp;
|
||||
@ -3598,7 +3580,7 @@ iff_find(struct ifc *ifcp, int type)
|
||||
return (iffp);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
setindex2ifc(int idx, struct ifc *ifcp)
|
||||
{
|
||||
int n, nsize;
|
||||
|
Loading…
Reference in New Issue
Block a user