diff options
author | gjb <gjb@FreeBSD.org> | 2015-04-22 12:58:16 +0000 |
---|---|---|
committer | gjb <gjb@FreeBSD.org> | 2015-04-22 12:58:16 +0000 |
commit | dfb432f9b57e5f768243247ed35fbe38bb9c40f1 (patch) | |
tree | fa80e7790043dbef019b7054cc115a9f48aa1744 /sbin/ifconfig | |
parent | d80ecfbe72b8ed71093c9e5af6df5f0561b96d8c (diff) | |
parent | 9fb28191d6c6ea33751f04137cf88d9c9d97f97e (diff) | |
download | FreeBSD-src-dfb432f9b57e5f768243247ed35fbe38bb9c40f1.zip FreeBSD-src-dfb432f9b57e5f768243247ed35fbe38bb9c40f1.tar.gz |
MFH: r280643-r281852
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sbin/ifconfig')
-rw-r--r-- | sbin/ifconfig/af_inet.c | 1 | ||||
-rw-r--r-- | sbin/ifconfig/af_inet6.c | 1 | ||||
-rw-r--r-- | sbin/ifconfig/af_nd6.c | 1 | ||||
-rw-r--r-- | sbin/ifconfig/carp.c | 1 | ||||
-rw-r--r-- | sbin/ifconfig/ifconfig.c | 1 | ||||
-rw-r--r-- | sbin/ifconfig/ifmedia.c | 32 | ||||
-rw-r--r-- | sbin/ifconfig/ifvlan.c | 1 | ||||
-rw-r--r-- | sbin/ifconfig/ifvxlan.c | 1 |
8 files changed, 26 insertions, 13 deletions
diff --git a/sbin/ifconfig/af_inet.c b/sbin/ifconfig/af_inet.c index c733373..3c3a757 100644 --- a/sbin/ifconfig/af_inet.c +++ b/sbin/ifconfig/af_inet.c @@ -46,7 +46,6 @@ static const char rcsid[] = #include <ifaddrs.h> #include <netinet/in.h> -#include <net/if_var.h> /* for struct ifaddr */ #include <netinet/in_var.h> #include <arpa/inet.h> #include <netdb.h> diff --git a/sbin/ifconfig/af_inet6.c b/sbin/ifconfig/af_inet6.c index bff66e0..8a18401 100644 --- a/sbin/ifconfig/af_inet6.c +++ b/sbin/ifconfig/af_inet6.c @@ -48,7 +48,6 @@ static const char rcsid[] = #include <arpa/inet.h> #include <netinet/in.h> -#include <net/if_var.h> /* for struct ifaddr */ #include <netinet/in_var.h> #include <arpa/inet.h> #include <netdb.h> diff --git a/sbin/ifconfig/af_nd6.c b/sbin/ifconfig/af_nd6.c index 3a510a5..9a1be79 100644 --- a/sbin/ifconfig/af_nd6.c +++ b/sbin/ifconfig/af_nd6.c @@ -46,7 +46,6 @@ static const char rcsid[] = #include <arpa/inet.h> #include <netinet/in.h> -#include <net/if_var.h> #include <netinet/in_var.h> #include <arpa/inet.h> #include <netdb.h> diff --git a/sbin/ifconfig/carp.c b/sbin/ifconfig/carp.c index 2c58fcb..adff153 100644 --- a/sbin/ifconfig/carp.c +++ b/sbin/ifconfig/carp.c @@ -36,7 +36,6 @@ #include <unistd.h> #include <net/if.h> -#include <net/if_var.h> #include <netinet/in.h> #include <netinet/in_var.h> #include <netinet/ip_carp.h> diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c index 9d38a27..4a79992 100644 --- a/sbin/ifconfig/ifconfig.c +++ b/sbin/ifconfig/ifconfig.c @@ -51,7 +51,6 @@ static const char rcsid[] = #include <net/ethernet.h> #include <net/if.h> -#include <net/if_var.h> #include <net/if_dl.h> #include <net/if_types.h> #include <net/route.h> diff --git a/sbin/ifconfig/ifmedia.c b/sbin/ifconfig/ifmedia.c index 0b0daa3..eee3391 100644 --- a/sbin/ifconfig/ifmedia.c +++ b/sbin/ifconfig/ifmedia.c @@ -109,11 +109,17 @@ media_status(int s) { struct ifmediareq ifmr; int *media_list, i; + int xmedia = 1; (void) memset(&ifmr, 0, sizeof(ifmr)); (void) strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { + /* + * Check if interface supports extended media types. + */ + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)&ifmr) < 0) + xmedia = 0; + if (xmedia == 0 && ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { /* * Interface doesn't support SIOC{G,S}IFMEDIA. */ @@ -130,8 +136,13 @@ media_status(int s) err(1, "malloc"); ifmr.ifm_ulist = media_list; - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) - err(1, "SIOCGIFMEDIA"); + if (xmedia) { + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)&ifmr) < 0) + err(1, "SIOCGIFXMEDIA"); + } else { + if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) + err(1, "SIOCGIFMEDIA"); + } printf("\tmedia: "); print_media_word(ifmr.ifm_current, 1); @@ -194,6 +205,7 @@ ifmedia_getstate(int s) { static struct ifmediareq *ifmr = NULL; int *mwords; + int xmedia = 1; if (ifmr == NULL) { ifmr = (struct ifmediareq *)malloc(sizeof(struct ifmediareq)); @@ -213,7 +225,10 @@ ifmedia_getstate(int s) * the current media type and the top-level type. */ - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) { + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)ifmr) < 0) { + xmedia = 0; + } + if (xmedia == 0 && ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) { err(1, "SIOCGIFMEDIA"); } @@ -225,8 +240,13 @@ ifmedia_getstate(int s) err(1, "malloc"); ifmr->ifm_ulist = mwords; - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) - err(1, "SIOCGIFMEDIA"); + if (xmedia) { + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)ifmr) < 0) + err(1, "SIOCGIFXMEDIA"); + } else { + if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) + err(1, "SIOCGIFMEDIA"); + } } return ifmr; diff --git a/sbin/ifconfig/ifvlan.c b/sbin/ifconfig/ifvlan.c index cefcbbc..1a3fbaa 100644 --- a/sbin/ifconfig/ifvlan.c +++ b/sbin/ifconfig/ifvlan.c @@ -40,7 +40,6 @@ #include <net/ethernet.h> #include <net/if.h> -#include <net/if_var.h> #include <net/if_vlan_var.h> #include <net/route.h> diff --git a/sbin/ifconfig/ifvxlan.c b/sbin/ifconfig/ifvxlan.c index 9aa84a2..48f5331 100644 --- a/sbin/ifconfig/ifvxlan.c +++ b/sbin/ifconfig/ifvxlan.c @@ -39,7 +39,6 @@ __FBSDID("$FreeBSD$"); #include <net/ethernet.h> #include <net/if.h> -#include <net/if_var.h> #include <net/if_vxlan.h> #include <net/route.h> #include <netinet/in.h> |