Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Apr 2015 06:52:20 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r281993 - projects/ifnet/sys/net
Message-ID:  <201504260652.t3Q6qKj1033986@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Sun Apr 26 06:52:19 2015
New Revision: 281993
URL: https://svnweb.freebsd.org/changeset/base/281993

Log:
  To not confuse possible 3-rd party applications, always report
  historical IFF_RUNNING together with IFF_UP in getifaddrs(3).

Modified:
  projects/ifnet/sys/net/rtsock.c

Modified: projects/ifnet/sys/net/rtsock.c
==============================================================================
--- projects/ifnet/sys/net/rtsock.c	Sun Apr 26 01:41:10 2015	(r281992)
+++ projects/ifnet/sys/net/rtsock.c	Sun Apr 26 06:52:19 2015	(r281993)
@@ -1253,6 +1253,8 @@ rt_ifmsg(struct ifnet *ifp)
 	ifm = mtod(m, struct if_msghdr *);
 	ifm->ifm_index = ifp->if_index;
 	ifm->ifm_flags = ifp->if_flags;
+	if (ifp->if_flags & IFF_UP)
+		ifm->ifm_flags |= IFF_RUNNING;
 	if_data_copy(ifp, &ifm->ifm_data);
 	ifm->ifm_addrs = 0;
 	rt_dispatch(m, AF_UNSPEC);
@@ -1558,6 +1560,8 @@ sysctl_iflist_ifml(struct ifnet *ifp, st
 		ifm32 = (struct if_msghdrl32 *)ifm;
 		ifm32->ifm_addrs = info->rti_addrs;
 		ifm32->ifm_flags = ifp->if_flags;
+		if (ifp->if_flags & IFF_UP)
+			ifm32->ifm_flags |= IFF_RUNNING;
 		ifm32->ifm_index = ifp->if_index;
 		ifm32->_ifm_spare1 = 0;
 		ifm32->ifm_len = sizeof(*ifm32);
@@ -1568,6 +1572,8 @@ sysctl_iflist_ifml(struct ifnet *ifp, st
 	{
 		ifm->ifm_addrs = info->rti_addrs;
 		ifm->ifm_flags = ifp->if_flags;
+		if (ifp->if_flags & IFF_UP)
+			ifm->ifm_flags |= IFF_RUNNING;
 		ifm->ifm_index = ifp->if_index;
 		ifm->_ifm_spare1 = 0;
 		ifm->ifm_len = sizeof(*ifm);
@@ -1596,6 +1602,8 @@ sysctl_iflist_ifm(struct ifnet *ifp, str
 		ifm32 = (struct if_msghdr32 *)ifm;
 		ifm32->ifm_addrs = info->rti_addrs;
 		ifm32->ifm_flags = ifp->if_flags;
+		if (ifp->if_flags & IFF_UP)
+			ifm32->ifm_flags |= IFF_RUNNING;
 		ifm32->ifm_index = ifp->if_index;
 		ifd = &ifm32->ifm_data;
 	} else
@@ -1603,6 +1611,8 @@ sysctl_iflist_ifm(struct ifnet *ifp, str
 	{
 		ifm->ifm_addrs = info->rti_addrs;
 		ifm->ifm_flags = ifp->if_flags;
+		if (ifp->if_flags & IFF_UP)
+			ifm->ifm_flags |= IFF_RUNNING;
 		ifm->ifm_index = ifp->if_index;
 		ifd = &ifm->ifm_data;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504260652.t3Q6qKj1033986>