diff options
author | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:03:14 +0200 |
---|---|---|
committer | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:04:07 +0200 |
commit | d62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch) | |
tree | 3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /zebra/ioctl.c | |
parent | *: add indent control files (diff) | |
download | frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip |
*: reindentreindent-master-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'zebra/ioctl.c')
-rw-r--r-- | zebra/ioctl.c | 706 |
1 files changed, 340 insertions, 366 deletions
diff --git a/zebra/ioctl.c b/zebra/ioctl.c index 25aeea18f..72d98943e 100644 --- a/zebra/ioctl.c +++ b/zebra/ioctl.c @@ -40,551 +40,525 @@ extern struct zebra_privs_t zserv_privs; /* clear and set interface name string */ -void -ifreq_set_name (struct ifreq *ifreq, struct interface *ifp) +void ifreq_set_name(struct ifreq *ifreq, struct interface *ifp) { - strncpy (ifreq->ifr_name, ifp->name, IFNAMSIZ); + strncpy(ifreq->ifr_name, ifp->name, IFNAMSIZ); } /* call ioctl system call */ -int -if_ioctl (u_long request, caddr_t buffer) +int if_ioctl(u_long request, caddr_t buffer) { - int sock; - int ret; - int err = 0; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("Can't raise privileges"); - sock = socket (AF_INET, SOCK_DGRAM, 0); - if (sock < 0) - { - int save_errno = errno; - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges"); - zlog_err("Cannot create UDP socket: %s", safe_strerror(save_errno)); - exit (1); - } - if ((ret = ioctl (sock, request, buffer)) < 0) - err = errno; - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges"); - close (sock); - - if (ret < 0) - { - errno = err; - return ret; - } - return 0; + int sock; + int ret; + int err = 0; + + if (zserv_privs.change(ZPRIVS_RAISE)) + zlog_err("Can't raise privileges"); + sock = socket(AF_INET, SOCK_DGRAM, 0); + if (sock < 0) { + int save_errno = errno; + if (zserv_privs.change(ZPRIVS_LOWER)) + zlog_err("Can't lower privileges"); + zlog_err("Cannot create UDP socket: %s", + safe_strerror(save_errno)); + exit(1); + } + if ((ret = ioctl(sock, request, buffer)) < 0) + err = errno; + if (zserv_privs.change(ZPRIVS_LOWER)) + zlog_err("Can't lower privileges"); + close(sock); + + if (ret < 0) { + errno = err; + return ret; + } + return 0; } -static int -if_ioctl_ipv6 (u_long request, caddr_t buffer) +static int if_ioctl_ipv6(u_long request, caddr_t buffer) { - int sock; - int ret; - int err = 0; - - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("Can't raise privileges"); - sock = socket (AF_INET6, SOCK_DGRAM, 0); - if (sock < 0) - { - int save_errno = errno; - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges"); - zlog_err("Cannot create IPv6 datagram socket: %s", - safe_strerror(save_errno)); - exit (1); - } - - if ((ret = ioctl (sock, request, buffer)) < 0) - err = errno; - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges"); - close (sock); - - if (ret < 0) - { - errno = err; - return ret; - } - return 0; + int sock; + int ret; + int err = 0; + + if (zserv_privs.change(ZPRIVS_RAISE)) + zlog_err("Can't raise privileges"); + sock = socket(AF_INET6, SOCK_DGRAM, 0); + if (sock < 0) { + int save_errno = errno; + if (zserv_privs.change(ZPRIVS_LOWER)) + zlog_err("Can't lower privileges"); + zlog_err("Cannot create IPv6 datagram socket: %s", + safe_strerror(save_errno)); + exit(1); + } + + if ((ret = ioctl(sock, request, buffer)) < 0) + err = errno; + if (zserv_privs.change(ZPRIVS_LOWER)) + zlog_err("Can't lower privileges"); + close(sock); + + if (ret < 0) { + errno = err; + return ret; + } + return 0; } /* * get interface metric * -- if value is not avaliable set -1 */ -void -if_get_metric (struct interface *ifp) +void if_get_metric(struct interface *ifp) { #ifdef SIOCGIFMETRIC - struct ifreq ifreq; + struct ifreq ifreq; - ifreq_set_name (&ifreq, ifp); + ifreq_set_name(&ifreq, ifp); - if (if_ioctl (SIOCGIFMETRIC, (caddr_t) &ifreq) < 0) - return; - ifp->metric = ifreq.ifr_metric; - if (ifp->metric == 0) - ifp->metric = 1; -#else /* SIOCGIFMETRIC */ - ifp->metric = -1; + if (if_ioctl(SIOCGIFMETRIC, (caddr_t)&ifreq) < 0) + return; + ifp->metric = ifreq.ifr_metric; + if (ifp->metric == 0) + ifp->metric = 1; +#else /* SIOCGIFMETRIC */ + ifp->metric = -1; #endif /* SIOCGIFMETRIC */ } /* get interface MTU */ -void -if_get_mtu (struct interface *ifp) +void if_get_mtu(struct interface *ifp) { - struct ifreq ifreq; + struct ifreq ifreq; - ifreq_set_name (&ifreq, ifp); + ifreq_set_name(&ifreq, ifp); #if defined(SIOCGIFMTU) - if (if_ioctl (SIOCGIFMTU, (caddr_t) & ifreq) < 0) - { - zlog_info ("Can't lookup mtu by ioctl(SIOCGIFMTU)"); - ifp->mtu6 = ifp->mtu = -1; - return; - } + if (if_ioctl(SIOCGIFMTU, (caddr_t)&ifreq) < 0) { + zlog_info("Can't lookup mtu by ioctl(SIOCGIFMTU)"); + ifp->mtu6 = ifp->mtu = -1; + return; + } #ifdef SUNOS_5 - ifp->mtu6 = ifp->mtu = ifreq.ifr_metric; + ifp->mtu6 = ifp->mtu = ifreq.ifr_metric; #else - ifp->mtu6 = ifp->mtu = ifreq.ifr_mtu; + ifp->mtu6 = ifp->mtu = ifreq.ifr_mtu; #endif /* SUNOS_5 */ - /* propogate */ - zebra_interface_up_update(ifp); + /* propogate */ + zebra_interface_up_update(ifp); #else - zlog_info("Can't lookup mtu on this system"); - ifp->mtu6 = ifp->mtu = -1; + zlog_info("Can't lookup mtu on this system"); + ifp->mtu6 = ifp->mtu = -1; #endif } #ifdef HAVE_NETLINK /* Interface address setting via netlink interface. */ -int -if_set_prefix (struct interface *ifp, struct connected *ifc) +int if_set_prefix(struct interface *ifp, struct connected *ifc) { - return kernel_address_add_ipv4 (ifp, ifc); + return kernel_address_add_ipv4(ifp, ifc); } /* Interface address is removed using netlink interface. */ -int -if_unset_prefix (struct interface *ifp, struct connected *ifc) +int if_unset_prefix(struct interface *ifp, struct connected *ifc) { - return kernel_address_delete_ipv4 (ifp, ifc); + return kernel_address_delete_ipv4(ifp, ifc); } #else /* ! HAVE_NETLINK */ #ifdef HAVE_STRUCT_IFALIASREQ /* Set up interface's IP address, netmask (and broadcas? ). *BSD may has ifaliasreq structure. */ -int -if_set_prefix (struct interface *ifp, struct connected *ifc) +int if_set_prefix(struct interface *ifp, struct connected *ifc) { - int ret; - struct ifaliasreq addreq; - struct sockaddr_in addr; - struct sockaddr_in mask; - struct prefix_ipv4 *p; + int ret; + struct ifaliasreq addreq; + struct sockaddr_in addr; + struct sockaddr_in mask; + struct prefix_ipv4 *p; - p = (struct prefix_ipv4 *) ifc->address; - rib_lookup_and_pushup (p, ifp->vrf_id); + p = (struct prefix_ipv4 *)ifc->address; + rib_lookup_and_pushup(p, ifp->vrf_id); - memset (&addreq, 0, sizeof addreq); - strncpy ((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); + memset(&addreq, 0, sizeof addreq); + strncpy((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); - memset (&addr, 0, sizeof (struct sockaddr_in)); - addr.sin_addr = p->prefix; - addr.sin_family = p->family; + memset(&addr, 0, sizeof(struct sockaddr_in)); + addr.sin_addr = p->prefix; + addr.sin_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - addr.sin_len = sizeof (struct sockaddr_in); + addr.sin_len = sizeof(struct sockaddr_in); #endif - memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in)); + memcpy(&addreq.ifra_addr, &addr, sizeof(struct sockaddr_in)); - memset (&mask, 0, sizeof (struct sockaddr_in)); - masklen2ip (p->prefixlen, &mask.sin_addr); - mask.sin_family = p->family; + memset(&mask, 0, sizeof(struct sockaddr_in)); + masklen2ip(p->prefixlen, &mask.sin_addr); + mask.sin_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - mask.sin_len = sizeof (struct sockaddr_in); + mask.sin_len = sizeof(struct sockaddr_in); #endif - memcpy (&addreq.ifra_mask, &mask, sizeof (struct sockaddr_in)); - - ret = if_ioctl (SIOCAIFADDR, (caddr_t) &addreq); - if (ret < 0) - return ret; - return 0; + memcpy(&addreq.ifra_mask, &mask, sizeof(struct sockaddr_in)); + + ret = if_ioctl(SIOCAIFADDR, (caddr_t)&addreq); + if (ret < 0) + return ret; + return 0; } /* Set up interface's IP address, netmask (and broadcas? ). *BSD may has ifaliasreq structure. */ -int -if_unset_prefix (struct interface *ifp, struct connected *ifc) +int if_unset_prefix(struct interface *ifp, struct connected *ifc) { - int ret; - struct ifaliasreq addreq; - struct sockaddr_in addr; - struct sockaddr_in mask; - struct prefix_ipv4 *p; + int ret; + struct ifaliasreq addreq; + struct sockaddr_in addr; + struct sockaddr_in mask; + struct prefix_ipv4 *p; - p = (struct prefix_ipv4 *)ifc->address; + p = (struct prefix_ipv4 *)ifc->address; - memset (&addreq, 0, sizeof addreq); - strncpy ((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); + memset(&addreq, 0, sizeof addreq); + strncpy((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); - memset (&addr, 0, sizeof (struct sockaddr_in)); - addr.sin_addr = p->prefix; - addr.sin_family = p->family; + memset(&addr, 0, sizeof(struct sockaddr_in)); + addr.sin_addr = p->prefix; + addr.sin_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - addr.sin_len = sizeof (struct sockaddr_in); + addr.sin_len = sizeof(struct sockaddr_in); #endif - memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in)); + memcpy(&addreq.ifra_addr, &addr, sizeof(struct sockaddr_in)); - memset (&mask, 0, sizeof (struct sockaddr_in)); - masklen2ip (p->prefixlen, &mask.sin_addr); - mask.sin_family = p->family; + memset(&mask, 0, sizeof(struct sockaddr_in)); + masklen2ip(p->prefixlen, &mask.sin_addr); + mask.sin_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - mask.sin_len = sizeof (struct sockaddr_in); + mask.sin_len = sizeof(struct sockaddr_in); #endif - memcpy (&addreq.ifra_mask, &mask, sizeof (struct sockaddr_in)); - - ret = if_ioctl (SIOCDIFADDR, (caddr_t) &addreq); - if (ret < 0) - return ret; - return 0; + memcpy(&addreq.ifra_mask, &mask, sizeof(struct sockaddr_in)); + + ret = if_ioctl(SIOCDIFADDR, (caddr_t)&addreq); + if (ret < 0) + return ret; + return 0; } #else /* Set up interface's address, netmask (and broadcas? ). Linux or Solaris uses ifname:number semantics to set IP address aliases. */ -int -if_set_prefix (struct interface *ifp, struct connected *ifc) +int if_set_prefix(struct interface *ifp, struct connected *ifc) { - int ret; - struct ifreq ifreq; - struct sockaddr_in addr; - struct sockaddr_in broad; - struct sockaddr_in mask; - struct prefix_ipv4 ifaddr; - struct prefix_ipv4 *p; - - p = (struct prefix_ipv4 *) ifc->address; - - ifaddr = *p; - - ifreq_set_name (&ifreq, ifp); - - addr.sin_addr = p->prefix; - addr.sin_family = p->family; - memcpy (&ifreq.ifr_addr, &addr, sizeof (struct sockaddr_in)); - ret = if_ioctl (SIOCSIFADDR, (caddr_t) &ifreq); - if (ret < 0) - return ret; - - /* We need mask for make broadcast addr. */ - masklen2ip (p->prefixlen, &mask.sin_addr); - - if (if_is_broadcast (ifp)) - { - apply_mask_ipv4 (&ifaddr); - addr.sin_addr = ifaddr.prefix; - - broad.sin_addr.s_addr = (addr.sin_addr.s_addr | ~mask.sin_addr.s_addr); - broad.sin_family = p->family; - - memcpy (&ifreq.ifr_broadaddr, &broad, sizeof (struct sockaddr_in)); - ret = if_ioctl (SIOCSIFBRDADDR, (caddr_t) &ifreq); - if (ret < 0) - return ret; - } - - mask.sin_family = p->family; + int ret; + struct ifreq ifreq; + struct sockaddr_in addr; + struct sockaddr_in broad; + struct sockaddr_in mask; + struct prefix_ipv4 ifaddr; + struct prefix_ipv4 *p; + + p = (struct prefix_ipv4 *)ifc->address; + + ifaddr = *p; + + ifreq_set_name(&ifreq, ifp); + + addr.sin_addr = p->prefix; + addr.sin_family = p->family; + memcpy(&ifreq.ifr_addr, &addr, sizeof(struct sockaddr_in)); + ret = if_ioctl(SIOCSIFADDR, (caddr_t)&ifreq); + if (ret < 0) + return ret; + + /* We need mask for make broadcast addr. */ + masklen2ip(p->prefixlen, &mask.sin_addr); + + if (if_is_broadcast(ifp)) { + apply_mask_ipv4(&ifaddr); + addr.sin_addr = ifaddr.prefix; + + broad.sin_addr.s_addr = + (addr.sin_addr.s_addr | ~mask.sin_addr.s_addr); + broad.sin_family = p->family; + + memcpy(&ifreq.ifr_broadaddr, &broad, + sizeof(struct sockaddr_in)); + ret = if_ioctl(SIOCSIFBRDADDR, (caddr_t)&ifreq); + if (ret < 0) + return ret; + } + + mask.sin_family = p->family; #ifdef SUNOS_5 - memcpy (&mask, &ifreq.ifr_addr, sizeof (mask)); + memcpy(&mask, &ifreq.ifr_addr, sizeof(mask)); #else - memcpy (&ifreq.ifr_netmask, &mask, sizeof (struct sockaddr_in)); + memcpy(&ifreq.ifr_netmask, &mask, sizeof(struct sockaddr_in)); #endif /* SUNOS5 */ - ret = if_ioctl (SIOCSIFNETMASK, (caddr_t) &ifreq); - if (ret < 0) - return ret; + ret = if_ioctl(SIOCSIFNETMASK, (caddr_t)&ifreq); + if (ret < 0) + return ret; - return 0; + return 0; } /* Set up interface's address, netmask (and broadcas? ). Linux or Solaris uses ifname:number semantics to set IP address aliases. */ -int -if_unset_prefix (struct interface *ifp, struct connected *ifc) +int if_unset_prefix(struct interface *ifp, struct connected *ifc) { - int ret; - struct ifreq ifreq; - struct sockaddr_in addr; - struct prefix_ipv4 *p; + int ret; + struct ifreq ifreq; + struct sockaddr_in addr; + struct prefix_ipv4 *p; - p = (struct prefix_ipv4 *) ifc->address; + p = (struct prefix_ipv4 *)ifc->address; - ifreq_set_name (&ifreq, ifp); + ifreq_set_name(&ifreq, ifp); - memset (&addr, 0, sizeof (struct sockaddr_in)); - addr.sin_family = p->family; - memcpy (&ifreq.ifr_addr, &addr, sizeof (struct sockaddr_in)); - ret = if_ioctl (SIOCSIFADDR, (caddr_t) &ifreq); - if (ret < 0) - return ret; + memset(&addr, 0, sizeof(struct sockaddr_in)); + addr.sin_family = p->family; + memcpy(&ifreq.ifr_addr, &addr, sizeof(struct sockaddr_in)); + ret = if_ioctl(SIOCSIFADDR, (caddr_t)&ifreq); + if (ret < 0) + return ret; - return 0; + return 0; } #endif /* HAVE_STRUCT_IFALIASREQ */ #endif /* HAVE_NETLINK */ /* get interface flags */ -void -if_get_flags (struct interface *ifp) +void if_get_flags(struct interface *ifp) { - int ret; - struct ifreq ifreq; + int ret; + struct ifreq ifreq; #ifdef HAVE_BSD_LINK_DETECT - struct ifmediareq ifmr; + struct ifmediareq ifmr; #endif /* HAVE_BSD_LINK_DETECT */ - ifreq_set_name (&ifreq, ifp); + ifreq_set_name(&ifreq, ifp); - ret = if_ioctl (SIOCGIFFLAGS, (caddr_t) &ifreq); - if (ret < 0) - { - zlog_err("if_ioctl(SIOCGIFFLAGS) failed: %s", safe_strerror(errno)); - return; - } + ret = if_ioctl(SIOCGIFFLAGS, (caddr_t)&ifreq); + if (ret < 0) { + zlog_err("if_ioctl(SIOCGIFFLAGS) failed: %s", + safe_strerror(errno)); + return; + } #ifdef HAVE_BSD_LINK_DETECT /* Detect BSD link-state at start-up */ - /* Per-default, IFF_RUNNING is held high, unless link-detect says - * otherwise - we abuse IFF_RUNNING inside zebra as a link-state flag, - * following practice on Linux and Solaris kernels - */ - SET_FLAG(ifreq.ifr_flags, IFF_RUNNING); - - if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_LINKDETECTION)) - { - (void) memset(&ifmr, 0, sizeof(ifmr)); - strncpy (ifmr.ifm_name, ifp->name, IFNAMSIZ); - - /* Seems not all interfaces implement this ioctl */ - if (if_ioctl(SIOCGIFMEDIA, (caddr_t) &ifmr) < 0) - zlog_err("if_ioctl(SIOCGIFMEDIA) failed: %s", safe_strerror(errno)); - else if (ifmr.ifm_status & IFM_AVALID) /* Link state is valid */ - { - if (ifmr.ifm_status & IFM_ACTIVE) - SET_FLAG(ifreq.ifr_flags, IFF_RUNNING); - else - UNSET_FLAG(ifreq.ifr_flags, IFF_RUNNING); - } - } + /* Per-default, IFF_RUNNING is held high, unless link-detect says + * otherwise - we abuse IFF_RUNNING inside zebra as a link-state flag, + * following practice on Linux and Solaris kernels + */ + SET_FLAG(ifreq.ifr_flags, IFF_RUNNING); + + if (CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION)) { + (void)memset(&ifmr, 0, sizeof(ifmr)); + strncpy(ifmr.ifm_name, ifp->name, IFNAMSIZ); + + /* Seems not all interfaces implement this ioctl */ + if (if_ioctl(SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) + zlog_err("if_ioctl(SIOCGIFMEDIA) failed: %s", + safe_strerror(errno)); + else if (ifmr.ifm_status & IFM_AVALID) /* Link state is valid */ + { + if (ifmr.ifm_status & IFM_ACTIVE) + SET_FLAG(ifreq.ifr_flags, IFF_RUNNING); + else + UNSET_FLAG(ifreq.ifr_flags, IFF_RUNNING); + } + } #endif /* HAVE_BSD_LINK_DETECT */ - if_flags_update (ifp, (ifreq.ifr_flags & 0x0000ffff)); + if_flags_update(ifp, (ifreq.ifr_flags & 0x0000ffff)); } /* Set interface flags */ -int -if_set_flags (struct interface *ifp, uint64_t flags) +int if_set_flags(struct interface *ifp, uint64_t flags) { - int ret; - struct ifreq ifreq; + int ret; + struct ifreq ifreq; - memset (&ifreq, 0, sizeof(struct ifreq)); - ifreq_set_name (&ifreq, ifp); + memset(&ifreq, 0, sizeof(struct ifreq)); + ifreq_set_name(&ifreq, ifp); - ifreq.ifr_flags = ifp->flags; - ifreq.ifr_flags |= flags; + ifreq.ifr_flags = ifp->flags; + ifreq.ifr_flags |= flags; - ret = if_ioctl (SIOCSIFFLAGS, (caddr_t) &ifreq); + ret = if_ioctl(SIOCSIFFLAGS, (caddr_t)&ifreq); - if (ret < 0) - { - zlog_info ("can't set interface flags"); - return ret; - } - return 0; + if (ret < 0) { + zlog_info("can't set interface flags"); + return ret; + } + return 0; } /* Unset interface's flag. */ -int -if_unset_flags (struct interface *ifp, uint64_t flags) +int if_unset_flags(struct interface *ifp, uint64_t flags) { - int ret; - struct ifreq ifreq; + int ret; + struct ifreq ifreq; - memset (&ifreq, 0, sizeof(struct ifreq)); - ifreq_set_name (&ifreq, ifp); + memset(&ifreq, 0, sizeof(struct ifreq)); + ifreq_set_name(&ifreq, ifp); - ifreq.ifr_flags = ifp->flags; - ifreq.ifr_flags &= ~flags; + ifreq.ifr_flags = ifp->flags; + ifreq.ifr_flags &= ~flags; - ret = if_ioctl (SIOCSIFFLAGS, (caddr_t) &ifreq); + ret = if_ioctl(SIOCSIFFLAGS, (caddr_t)&ifreq); - if (ret < 0) - { - zlog_info ("can't unset interface flags"); - return ret; - } - return 0; + if (ret < 0) { + zlog_info("can't unset interface flags"); + return ret; + } + return 0; } #ifdef LINUX_IPV6 #ifndef _LINUX_IN6_H /* linux/include/net/ipv6.h */ -struct in6_ifreq -{ - struct in6_addr ifr6_addr; - u_int32_t ifr6_prefixlen; - int ifr6_ifindex; +struct in6_ifreq { + struct in6_addr ifr6_addr; + u_int32_t ifr6_prefixlen; + int ifr6_ifindex; }; #endif /* _LINUX_IN6_H */ /* Interface's address add/delete functions. */ -int -if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) +int if_prefix_add_ipv6(struct interface *ifp, struct connected *ifc) { - int ret; - struct prefix_ipv6 *p; - struct in6_ifreq ifreq; + int ret; + struct prefix_ipv6 *p; + struct in6_ifreq ifreq; - p = (struct prefix_ipv6 *) ifc->address; + p = (struct prefix_ipv6 *)ifc->address; - memset (&ifreq, 0, sizeof (struct in6_ifreq)); + memset(&ifreq, 0, sizeof(struct in6_ifreq)); - memcpy (&ifreq.ifr6_addr, &p->prefix, sizeof (struct in6_addr)); - ifreq.ifr6_ifindex = ifp->ifindex; - ifreq.ifr6_prefixlen = p->prefixlen; + memcpy(&ifreq.ifr6_addr, &p->prefix, sizeof(struct in6_addr)); + ifreq.ifr6_ifindex = ifp->ifindex; + ifreq.ifr6_prefixlen = p->prefixlen; - ret = if_ioctl_ipv6 (SIOCSIFADDR, (caddr_t) &ifreq); + ret = if_ioctl_ipv6(SIOCSIFADDR, (caddr_t)&ifreq); - return ret; + return ret; } -int -if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) +int if_prefix_delete_ipv6(struct interface *ifp, struct connected *ifc) { - int ret; - struct prefix_ipv6 *p; - struct in6_ifreq ifreq; + int ret; + struct prefix_ipv6 *p; + struct in6_ifreq ifreq; - p = (struct prefix_ipv6 *) ifc->address; + p = (struct prefix_ipv6 *)ifc->address; - memset (&ifreq, 0, sizeof (struct in6_ifreq)); + memset(&ifreq, 0, sizeof(struct in6_ifreq)); - memcpy (&ifreq.ifr6_addr, &p->prefix, sizeof (struct in6_addr)); - ifreq.ifr6_ifindex = ifp->ifindex; - ifreq.ifr6_prefixlen = p->prefixlen; + memcpy(&ifreq.ifr6_addr, &p->prefix, sizeof(struct in6_addr)); + ifreq.ifr6_ifindex = ifp->ifindex; + ifreq.ifr6_prefixlen = p->prefixlen; - ret = if_ioctl_ipv6 (SIOCDIFADDR, (caddr_t) &ifreq); + ret = if_ioctl_ipv6(SIOCDIFADDR, (caddr_t)&ifreq); - return ret; + return ret; } #else /* LINUX_IPV6 */ #ifdef HAVE_STRUCT_IN6_ALIASREQ #ifndef ND6_INFINITE_LIFETIME #define ND6_INFINITE_LIFETIME 0xffffffffL #endif /* ND6_INFINITE_LIFETIME */ -int -if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) +int if_prefix_add_ipv6(struct interface *ifp, struct connected *ifc) { - int ret; - struct in6_aliasreq addreq; - struct sockaddr_in6 addr; - struct sockaddr_in6 mask; - struct prefix_ipv6 *p; + int ret; + struct in6_aliasreq addreq; + struct sockaddr_in6 addr; + struct sockaddr_in6 mask; + struct prefix_ipv6 *p; - p = (struct prefix_ipv6 * ) ifc->address; + p = (struct prefix_ipv6 *)ifc->address; - memset (&addreq, 0, sizeof addreq); - strncpy ((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); + memset(&addreq, 0, sizeof addreq); + strncpy((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); - memset (&addr, 0, sizeof (struct sockaddr_in6)); - addr.sin6_addr = p->prefix; - addr.sin6_family = p->family; + memset(&addr, 0, sizeof(struct sockaddr_in6)); + addr.sin6_addr = p->prefix; + addr.sin6_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - addr.sin6_len = sizeof (struct sockaddr_in6); + addr.sin6_len = sizeof(struct sockaddr_in6); #endif - memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in6)); + memcpy(&addreq.ifra_addr, &addr, sizeof(struct sockaddr_in6)); - memset (&mask, 0, sizeof (struct sockaddr_in6)); - masklen2ip6 (p->prefixlen, &mask.sin6_addr); - mask.sin6_family = p->family; + memset(&mask, 0, sizeof(struct sockaddr_in6)); + masklen2ip6(p->prefixlen, &mask.sin6_addr); + mask.sin6_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - mask.sin6_len = sizeof (struct sockaddr_in6); + mask.sin6_len = sizeof(struct sockaddr_in6); #endif - memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6)); - - addreq.ifra_lifetime.ia6t_vltime = 0xffffffff; - addreq.ifra_lifetime.ia6t_pltime = 0xffffffff; - -#ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME - addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; - addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; + memcpy(&addreq.ifra_prefixmask, &mask, sizeof(struct sockaddr_in6)); + + addreq.ifra_lifetime.ia6t_vltime = 0xffffffff; + addreq.ifra_lifetime.ia6t_pltime = 0xffffffff; + +#ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME + addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; + addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; #endif - ret = if_ioctl_ipv6 (SIOCAIFADDR_IN6, (caddr_t) &addreq); - if (ret < 0) - return ret; - return 0; + ret = if_ioctl_ipv6(SIOCAIFADDR_IN6, (caddr_t)&addreq); + if (ret < 0) + return ret; + return 0; } -int -if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) +int if_prefix_delete_ipv6(struct interface *ifp, struct connected *ifc) { - int ret; - struct in6_aliasreq addreq; - struct sockaddr_in6 addr; - struct sockaddr_in6 mask; - struct prefix_ipv6 *p; + int ret; + struct in6_aliasreq addreq; + struct sockaddr_in6 addr; + struct sockaddr_in6 mask; + struct prefix_ipv6 *p; - p = (struct prefix_ipv6 *) ifc->address; + p = (struct prefix_ipv6 *)ifc->address; - memset (&addreq, 0, sizeof addreq); - strncpy ((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); + memset(&addreq, 0, sizeof addreq); + strncpy((char *)&addreq.ifra_name, ifp->name, sizeof addreq.ifra_name); - memset (&addr, 0, sizeof (struct sockaddr_in6)); - addr.sin6_addr = p->prefix; - addr.sin6_family = p->family; + memset(&addr, 0, sizeof(struct sockaddr_in6)); + addr.sin6_addr = p->prefix; + addr.sin6_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - addr.sin6_len = sizeof (struct sockaddr_in6); + addr.sin6_len = sizeof(struct sockaddr_in6); #endif - memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in6)); + memcpy(&addreq.ifra_addr, &addr, sizeof(struct sockaddr_in6)); - memset (&mask, 0, sizeof (struct sockaddr_in6)); - masklen2ip6 (p->prefixlen, &mask.sin6_addr); - mask.sin6_family = p->family; + memset(&mask, 0, sizeof(struct sockaddr_in6)); + masklen2ip6(p->prefixlen, &mask.sin6_addr); + mask.sin6_family = p->family; #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN - mask.sin6_len = sizeof (struct sockaddr_in6); + mask.sin6_len = sizeof(struct sockaddr_in6); #endif - memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6)); + memcpy(&addreq.ifra_prefixmask, &mask, sizeof(struct sockaddr_in6)); #ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME - addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; - addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; + addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; + addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; #endif - ret = if_ioctl_ipv6 (SIOCDIFADDR_IN6, (caddr_t) &addreq); - if (ret < 0) - return ret; - return 0; + ret = if_ioctl_ipv6(SIOCDIFADDR_IN6, (caddr_t)&addreq); + if (ret < 0) + return ret; + return 0; } #else -int -if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) +int if_prefix_add_ipv6(struct interface *ifp, struct connected *ifc) { - return 0; + return 0; } -int -if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) +int if_prefix_delete_ipv6(struct interface *ifp, struct connected *ifc) { - return 0; + return 0; } #endif /* HAVE_STRUCT_IN6_ALIASREQ */ |