/* Add or delete a route, depending on action. */
-static void INET_setroute(int action, char **args)
+static NOINLINE void INET_setroute(int action, char **args)
{
struct rtentry rt;
const char *netmask = NULL;
/* sanity checks.. */
if (mask_in_addr(rt)) {
- unsigned long mask = mask_in_addr(rt);
+ uint32_t mask = mask_in_addr(rt);
mask = ~ntohl(mask);
if ((rt.rt_flags & RTF_HOST) && mask != 0xffffffff) {
bb_error_msg_and_die("bogus netmask %s", netmask);
}
mask = ((struct sockaddr_in *) &rt.rt_dst)->sin_addr.s_addr;
- if (mask & ~mask_in_addr(rt)) {
+ if (mask & ~(uint32_t)mask_in_addr(rt)) {
bb_error_msg_and_die("netmask and route address conflict");
}
}
#if ENABLE_FEATURE_IPV6
-static void INET6_setroute(int action, char **args)
+static NOINLINE void INET6_setroute(int action, char **args)
{
struct sockaddr_in6 sa6;
struct in6_rtmsg rt;
if (devname) {
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, devname, sizeof(ifr.ifr_name));
+ strncpy_IFNAMSIZ(ifr.ifr_name, devname);
xioctl(skfd, SIOGIFINDEX, &ifr);
rt.rtmsg_ifindex = ifr.ifr_ifindex;
}