ipmaddr: use preferred_family when given
When creating socket() AF_INET is used irrespective of the family that is given at the command-line (with -4, -6, or -0). This change will open the socket with the preferred family. Signed-off-by: Mahesh Bandewar <maheshb@google.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
0ebb420929
commit
a5aaca9be2
13
ip/ipmaddr.c
13
ip/ipmaddr.c
|
|
@ -289,6 +289,7 @@ static int multiaddr_list(int argc, char **argv)
|
||||||
static int multiaddr_modify(int cmd, int argc, char **argv)
|
static int multiaddr_modify(int cmd, int argc, char **argv)
|
||||||
{
|
{
|
||||||
struct ifreq ifr = {};
|
struct ifreq ifr = {};
|
||||||
|
int family;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
if (cmd == RTM_NEWADDR)
|
if (cmd == RTM_NEWADDR)
|
||||||
|
|
@ -324,7 +325,17 @@ static int multiaddr_modify(int cmd, int argc, char **argv)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
switch (preferred_family) {
|
||||||
|
case AF_INET6:
|
||||||
|
case AF_PACKET:
|
||||||
|
case AF_INET:
|
||||||
|
family = preferred_family;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
family = AF_INET;
|
||||||
|
}
|
||||||
|
|
||||||
|
fd = socket(family, SOCK_DGRAM, 0);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
perror("Cannot create socket");
|
perror("Cannot create socket");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue