summaryrefslogtreecommitdiff
path: root/networking/ifenslave.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/ifenslave.c')
-rw-r--r--networking/ifenslave.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/networking/ifenslave.c b/networking/ifenslave.c
index b119517..0aa2320 100644
--- a/networking/ifenslave.c
+++ b/networking/ifenslave.c
@@ -148,6 +148,10 @@ static void change_active(char *master_ifname, char *slave_ifname);
static int enslave(char *master_ifname, char *slave_ifname);
static int release(char *master_ifname, char *slave_ifname);
+static void strncpy_IFNAMSIZ(char *dst, const char *src)
+{
+ strncpy(dst, src, IFNAMSIZ);
+}
int ifenslave_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int ifenslave_main(int argc ATTRIBUTE_UNUSED, char **argv)
@@ -302,7 +306,7 @@ static void get_drv_info(char *master_ifname)
struct ethtool_drvinfo info;
memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, master_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
ifr.ifr_data = (caddr_t)&info;
info.cmd = ETHTOOL_GDRVINFO;
@@ -332,8 +336,8 @@ static void change_active(char *master_ifname, char *slave_ifname)
slave_ifname);
}
- strncpy(ifr.ifr_name, master_ifname, IFNAMSIZ);
- strncpy(ifr.ifr_slave, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
+ strncpy_IFNAMSIZ(ifr.ifr_slave, slave_ifname);
if (ioctl(skfd, SIOCBONDCHANGEACTIVE, &ifr) < 0
&& ioctl(skfd, BOND_CHANGE_ACTIVE_OLD, &ifr) < 0
) {
@@ -448,8 +452,8 @@ static int enslave(char *master_ifname, char *slave_ifname)
}
/* Do the real thing */
- strncpy(ifr.ifr_name, master_ifname, IFNAMSIZ);
- strncpy(ifr.ifr_slave, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
+ strncpy_IFNAMSIZ(ifr.ifr_slave, slave_ifname);
if (ioctl(skfd, SIOCBONDENSLAVE, &ifr) < 0
&& ioctl(skfd, BOND_ENSLAVE_OLD, &ifr) < 0
) {
@@ -484,8 +488,8 @@ static int release(char *master_ifname, char *slave_ifname)
return 1;
}
- strncpy(ifr.ifr_name, master_ifname, IFNAMSIZ);
- strncpy(ifr.ifr_slave, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
+ strncpy_IFNAMSIZ(ifr.ifr_slave, slave_ifname);
if (ioctl(skfd, SIOCBONDRELEASE, &ifr) < 0
&& ioctl(skfd, BOND_RELEASE_OLD, &ifr) < 0
) {
@@ -508,11 +512,11 @@ static int get_if_settings(char *ifname, struct dev_data *dd)
{
int res;
- strncpy(dd->mtu.ifr_name, ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(dd->mtu.ifr_name, ifname);
res = ioctl(skfd, SIOCGIFMTU, &dd->mtu);
- strncpy(dd->flags.ifr_name, ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(dd->flags.ifr_name, ifname);
res |= ioctl(skfd, SIOCGIFFLAGS, &dd->flags);
- strncpy(dd->hwaddr.ifr_name, ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(dd->hwaddr.ifr_name, ifname);
res |= ioctl(skfd, SIOCGIFHWADDR, &dd->hwaddr);
return res;
@@ -520,7 +524,7 @@ static int get_if_settings(char *ifname, struct dev_data *dd)
static int get_slave_flags(char *slave_ifname)
{
- strncpy(slave.flags.ifr_name, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(slave.flags.ifr_name, slave_ifname);
return ioctl(skfd, SIOCGIFFLAGS, &slave.flags);
}
@@ -528,7 +532,7 @@ static int set_master_hwaddr(char *master_ifname, struct sockaddr *hwaddr)
{
struct ifreq ifr;
- strncpy(ifr.ifr_name, master_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
memcpy(&(ifr.ifr_hwaddr), hwaddr, sizeof(struct sockaddr));
return ioctl(skfd, SIOCSIFHWADDR, &ifr);
}
@@ -537,7 +541,7 @@ static int set_slave_hwaddr(char *slave_ifname, struct sockaddr *hwaddr)
{
struct ifreq ifr;
- strncpy(ifr.ifr_name, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, slave_ifname);
memcpy(&(ifr.ifr_hwaddr), hwaddr, sizeof(struct sockaddr));
return ioctl(skfd, SIOCSIFHWADDR, &ifr);
}
@@ -547,7 +551,7 @@ static int set_slave_mtu(char *slave_ifname, int mtu)
struct ifreq ifr;
ifr.ifr_mtu = mtu;
- strncpy(ifr.ifr_name, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, slave_ifname);
return ioctl(skfd, SIOCSIFMTU, &ifr);
}
@@ -556,7 +560,7 @@ static int set_if_flags(char *ifname, short flags)
struct ifreq ifr;
ifr.ifr_flags = flags;
- strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
return ioctl(skfd, SIOCSIFFLAGS, &ifr);
}
@@ -580,7 +584,7 @@ static int clear_if_addr(char *ifname)
{
struct ifreq ifr;
- strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
ifr.ifr_addr.sa_family = AF_INET;
memset(ifr.ifr_addr.sa_data, 0, sizeof(ifr.ifr_addr.sa_data));
return ioctl(skfd, SIOCSIFADDR, &ifr);
@@ -603,7 +607,7 @@ static int set_if_addr(char *master_ifname, char *slave_ifname)
int i;
for (i = 0; i < ARRAY_SIZE(ifra); i++) {
- strncpy(ifr.ifr_name, master_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
res = ioctl(skfd, ifra[i].g_ioctl, &ifr);
if (res < 0) {
ifr.ifr_addr.sa_family = AF_INET;
@@ -611,7 +615,7 @@ static int set_if_addr(char *master_ifname, char *slave_ifname)
sizeof(ifr.ifr_addr.sa_data));
}
- strncpy(ifr.ifr_name, slave_ifname, IFNAMSIZ);
+ strncpy_IFNAMSIZ(ifr.ifr_name, slave_ifname);
res = ioctl(skfd, ifra[i].s_ioctl, &ifr);
if (res < 0)
return res;