summaryrefslogtreecommitdiffstats
path: root/zebra/ioctl.c
diff options
context:
space:
mode:
authorwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:03:14 +0200
committerwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:04:07 +0200
commitd62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch)
tree3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /zebra/ioctl.c
parent*: add indent control files (diff)
downloadfrr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz
frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip
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.c706
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 */