Commit Graph

17 Commits

Author SHA1 Message Date
Vineeta Srivastava 995f45e30e Revert "Sigh, more vendors linking against hidden APIs."
This reverts commit 3183729816.

Change-Id: I5c041d7438b64c4c258c414ca9a133075999e1b6
2015-03-20 23:51:36 +00:00
Jeff Sharkey 3183729816 Sigh, more vendors linking against hidden APIs.
Bug: 19762346
Change-Id: I6c0823bf69e3f7e854ffea7b5483d09bb7359ff6
2015-03-16 12:14:40 -07:00
Jeff Sharkey e4f394087d Define enum class for NetlinkEvent actions.
This lets us use it for switch statements, and gives us stronger
type safety.

Change-Id: Idb3ad7098657a09f13c95dc7070611d35ede66ae
2015-03-13 13:27:56 -07:00
Jeff Sharkey 9a20e67fa6 Extend to receive NFLOG packets.
Packets captured and logged by the NFLOG target are unicast, so
extend to catch and decode them.  To avoid escaping issues, the raw
contents are passed around as hex strings.

Bug: 18335678
Change-Id: Ib7299500baa00080a1f000f9da843eb527363353
2015-01-15 12:50:59 -08:00
Lorenzo Colitti d7ff7ea652 Support parsing netlink route messages.
Bug: 9180552
Change-Id: I4a36d869ac692647fb226d0912285bdf2ffcb1fa
2014-06-21 10:55:07 +09:00
Lorenzo Colitti 9b34293566 Improvements to netlink event parsing.
1. Accept that parseNetlinkMessage can only parse one netlink
   message, because its way of returning output is to modify its
   member variables (mAction, mParams, etc.). Currently, it
   loops through all the messages it finds, updating its member
   variables as it goes along, and always returns true at the end
   of the buffer. This has the following problems:

   1. Since the function always returns true even when no
      messages were parsed, the caller has no way to know if
      parsing succeeded, and we get lots of "No subsystem found
      in netlink event" logs if the buffer did not contain any
      valid messages we were interested in.
   2. If there are multiple messages in the buffer, all but the
      last message will be silently ignored.
   3. If there are multiple messages and previous messages have
      more parameters than the last one, the resulting event will
      have a mixture of parameters from multiple messages.

   Instead of doing all this, change the contract to "parse the
   first valid message of interest in the buffer and return true,
   or return false if there were no such messages", and update
   the code and the comments accordingly.

2. Modify the caller (NetlinkListener) so it doesn't log an
   error when parseBinaryNetlinkMessage returns false, because
   this can now simply mean that we weren't interested in that
   particular message. parseBinaryNetlinkMessage already logs
   more informative errors.

3. Provide utility functions to check received message lengths and
   to convert message types to message names.

4. Simplify logging duplicate attributes.

5. Use the appropriate IFLA_xxx macros instead of rolling our own
   code to parse link state messages.

6. Move all the parsing code out to per-message-type parsing
   functions to order to simplify parseBinaryNetlinkMessage.

Bug: 9180552
Change-Id: I6bbc2f7a104f618674dde2369c1fd5e93ea49430
2014-06-21 10:54:43 +09:00
Lorenzo Colitti b185e90dcc Support parsing RDNSS ND options from netlink.
The RDNSS options (RFC 6106) used to configure DNS servers via
router advertisements are passed from the kernel to userspace via
RTM_NEWNDUSEROPT netlink messages. Add code to NetlinkEvent to
parse them.

Also fix a compiler warning and a couple of style issues.

Bug: 9180552
Change-Id: I6c532c8f0ceef3afdc977a431a036df398013e1a
2013-11-01 14:05:02 +09:00
Lorenzo Colitti f34861346d Switch back to subsystem "net" for netlink events.
The change to enable address tracking via netlink incorrectly
changed the subsystem of rtnetlink events from "net" to
"interface". This broke interface add/delete notifications,
which come from the kernel with subsystem "net".

Switch back to "net" and deal with address tracking via new
action codes instead of a new subsystem.

Bug: 10433320
Change-Id: Ibf30efb426949dfd02304cc1d9adb1c005a539a6
2013-09-03 00:25:14 +09:00
Lorenzo Colitti a4b4e9ad8e Parse IP address changes in NetlinkEvent.
This adds support for parsing RTM_NEWADDR and RTM_DELADDR
netlink messages received on netd's netlink socket and
formatting them them so NetlinkHandler can process them.

Address changes are notified in subsystem "address". Interface
changes, which used to be notified in subsystem "net", are now
notified in subsystem "interface" to avoid confusion.

Bug: 10232006
Change-Id: I93a50e8de17014e118a42f5cc0eb90a0cbfa73cc
2013-08-14 19:50:22 +09:00
JP Abgrall b982bce73b Revert "libsysutils: NetlinkEvent: add support for interface xt_IDLETIMER events."
This reverts commit 731d831e91.

Now that the xt_IDLETIMER uses the KOBJECT_UEVENT netlink, this
change is not needed anymore.
2012-04-26 23:52:58 -07:00
Ashish Sharma 731d831e91 libsysutils: NetlinkEvent: add support for interface xt_IDLETIMER events.
xt_IDLETIMER events are used to infer the interface (radio) state
based on a inactivity timeout value.

Change-Id: I755eb54a048ca1c6ce0c646564d61188d8241851
2012-04-11 17:24:46 -07:00
Mike J. Chen 17260b1468 Cleanup NetlinkListener and NetlinkEvent
To make it easier to be compatible with older existing code, use
default parameters instead of separate functions for setting.

Also, reintroduce the const usage that was not in the original
changes by Stan.

Also fix some indent spacing.

Change-Id: Ice9ec7f0d5c4a0673037e2e04a764d88a98f68eb
Signed-off-by: Mike J. Chen <mjchen@google.com>
2011-06-23 18:59:45 -07:00
Mike J. Chen ec16b9d47c Revert "Revert "Add NETLINK_ROUTE processing to the netlink client code, so that Ethernet""
This reverts commit 1d504eeb50.

Conflicts:

	libsysutils/src/NetlinkEvent.cpp

Bring back the changes from Stan Chesnutt regarding adding NETLINK_ROUTE
processing.  The original commit message description was:

    Add NETLINK_ROUTE processing to the netlink client code, so that Ethernet
    physical-layer up/down events can be tracked.  Upper layers will use these
    events to enable/disable Ethernet connectivity.

The original change was reverted due to an incompatiblity with Motorola's
ril.so binary.  I'll submit a patch to workaround that incompatiblity
separately.

Change-Id: I4e97ac98833b10543e654c63ecae3b9b8c7db44f
Signed-off-by: Mike J. Chen <mjchen@google.com>
2011-06-23 18:59:45 -07:00
Wink Saville 1d504eeb50 Revert "Add NETLINK_ROUTE processing to the netlink client code, so that Ethernet"
This reverts commit 8418ac8ba5.
2011-01-09 12:22:57 -08:00
Stan Chesnutt 8418ac8ba5 Add NETLINK_ROUTE processing to the netlink client code, so that Ethernet
physical-layer up/down events can be tracked.  Upper layers will use these
events to enable/disable Ethernet connectivity.

Change-Id: If07c30c4d79f26cf94eb5597be651ebbf9d072c6
2010-12-26 22:15:00 -08:00
San Mehat d674413ff4 sysutils: Add dump() to NetlinkEvent
Signed-off-by: San Mehat <san@google.com>
2009-12-24 07:20:36 -08:00
San Mehat 168415b822 libsysutils: New C++ system convenience library
This library contains re-usable classes for common
    system level daemons. Initial consumers of this library
    are 'nexus' and 'vold2'

Signed-off-by: San Mehat <san@google.com>
2009-05-06 15:12:02 -07:00