Skip to content

Commit

Permalink
[PATCH] net core: Some interface flags not returned by SIOCGIFFLAGS
Browse files Browse the repository at this point in the history
Commit b00055a " [NET] core: add
RFC2863 operstate" defined new interface flag values.  Its
documentation specified that these flags could be accessed from user
space via SIOCGIFFLAGS.  However, this does not work because the new
flags do not fit in that ioctl's argument width.

Change the documentation to match the code's behavior.  Also change
the source to explicitly show the truncation.  This _should_ have no
effect on executable code, and did not with gcc 4.2.4 generating x86
code.

A new ioctl could be defined to return all interface flags to user
space.  However, since this has been broken for three years with no
one complaining, there doesn't seem much need.  They are still
accessible via netlink.

Reported-by:  "Fredrik Arnerup" <fredrik.arnerup@edgeware.tv>
Signed-off-by: John Dykstra <john.dykstra1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
John Dykstra authored and David S. Miller committed Jun 12, 2009
1 parent 8981f01 commit 746e6ad
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 4 deletions.
3 changes: 0 additions & 3 deletions Documentation/networking/operstates.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ ifinfomsg::if_flags & IFF_LOWER_UP:
ifinfomsg::if_flags & IFF_DORMANT:
Driver has signaled netif_dormant_on()

These interface flags can also be queried without netlink using the
SIOCGIFFLAGS ioctl.

TLV IFLA_OPERSTATE

contains RFC2863 state of the interface in numeric representation:
Expand Down
2 changes: 1 addition & 1 deletion net/core/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -4209,7 +4209,7 @@ static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cm

switch (cmd) {
case SIOCGIFFLAGS: /* Get interface flags */
ifr->ifr_flags = dev_get_flags(dev);
ifr->ifr_flags = (short) dev_get_flags(dev);
return 0;

case SIOCGIFMETRIC: /* Get the metric on the interface
Expand Down

0 comments on commit 746e6ad

Please sign in to comment.