Commit graph

32 commits

Author SHA1 Message Date
Erik Kline
cc451785fe Fix incorrectly sized buffer.
Also: use a more correct size type.

Bug: 21562630
Bug: 21764392
Bug: 22464419
Change-Id: I9a9cf64f0481670828fac707e00196e222d0311e
2015-07-28 17:56:06 +09:00
Erik Kline
ba48ff7a59 Qualify IPv6 link-local DNS servers with an interface name
Bug: 21562630
Bug: 21764392
Change-Id: I7d271ae0f3fd92f70049017d38ccc15e3c1dda83
2015-06-18 15:44:41 +09:00
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
Mark Salyzyn
80f63d4b2c libsysutil: turn on -Werror (part deux)
- x86_64 format warnings

Change-Id: I81c2702f564bcada946f6a10f34bbf34c90f766b
2014-05-01 12:19:45 -07:00
Mark Salyzyn
9418fd1821 libsysutils: turn on -Werror
- Deal with some -Wunused / -Wunused-variable issues

Change-Id: I428a0032a8743c68c97f528d5f305ba63fee1d29
2014-04-30 07:51:47 -07:00
The Android Open Source Project
66ed50af68 Merge commit '536dea9d61a032e64bbe584a97463c6638ead009' into HEAD
Change-Id: I5c469a4b738629d99d721cad7ded02d6c35f56d5
2013-11-22 13:44:43 -08:00
Lorenzo Colitti
c7eec83f08 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.

[Cherry-pick of b185e90dcc]

Bug: 9180552
Change-Id: I6c532c8f0ceef3afdc977a431a036df398013e1a
2013-11-20 10:31:19 +09:00
Lorenzo Colitti
526b838c9d 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.

[Cherry-pick of f34861346d]

Bug: 10433320
Change-Id: Ibf30efb426949dfd02304cc1d9adb1c005a539a6
2013-11-20 10:29:42 +09:00
Lorenzo Colitti
9683456934 Get rid of an infinite loop in NetlinkEvent.cpp.
[Cherry-pick of 3984276ce4]

Bug: 10358527
Bug: 10263310
Bug: 10232006
Change-Id: I750e4bdf2000040adf214d6a772591d7bd25b350
2013-11-20 10:29:19 +09:00
Lorenzo Colitti
381f70f52a 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.

[Cherry-pick of a4b4e9ad8e]

Bug: 10232006
Change-Id: I93a50e8de17014e118a42f5cc0eb90a0cbfa73cc
2013-11-20 10:29:05 +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
3984276ce4 Get rid of an infinite loop in NetlinkEvent.cpp.
Bug: 10358527
Bug: 10263310
Bug: 10232006
Change-Id: I750e4bdf2000040adf214d6a772591d7bd25b350
2013-08-17 04:02: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
Irfan Sheriff
477df68854 Remove log spam
Bug: 5533986
Change-Id: I3d8108e2f65ce6513ac8b2d14541eaa5e4fc5da1
2011-10-28 23:57:32 -07:00
JP Abgrall
e6f80149a2 NetlinkEvents: adding support for iptables' quota2 NFLOG messages.
It passes the quota2 name and the device at the time the quota was
reached.
  ALERT_NAME=...
  INTERFACE=...

This needs the new kernel in which xt_quota2 can log.

Change-Id: Icf5045374e1e33bdd1da0d2a2c183e70903a1fea
2011-07-14 16:46:32 -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
David 'Digit' Turner
3311eea1d3 libsysutils: Fix NetLinkEvent security issues.
The issues were the following:
- The code in decode() didn't handle the degenerate case where the input buffer is full of '@'
- The code in decode() assumed the input buffer is properly zero-terminated.
- The code in decode() would not check that it doesn't overwrite the mParams[] array.
- The code in findParam() would check mParams[i] before checking the value of 'i'

Also remove un-necessary calls to strlen() at runtime.

Change-Id: I8acead959bd10d97c5380b08958fcb796248a010
2011-01-19 02:18:32 +01:00
Chih-Wei Huang
80ec37aa15 libsysutils: reimplement NetlinkEvent::findParam in the proper way
The original implementation can not find correct parameters for certain
cases. For example, if you have both foo_bar and foo, try to find foo
may be mismatched. The correct way is to match with "=".

Change-Id: I403b1a7b889583a57a4f3a14e575181ce93b10ff
2010-07-14 14:01:30 +08:00
San Mehat
7e8529a8b5 system/core: Switch libsysutils & sched_policy LOG -> SLOG
Change-Id: Id74c6895a8012c5915f2e259339101844de7c085
Signed-off-by: San Mehat <san@google.com>
2010-03-25 09:31:42 -07: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
ebfe3db361 libsysutils: Fix some bugs in NetlinkListener and NetlinkEvent
Signed-off-by: San Mehat <san@android.com>
2009-10-10 17:39:10 -07:00
San Mehat
03f0d27f6c libsysutils: Fix command argument passing bug + whitespace cleanup
Signed-off-by: San Mehat <san@google.com>
2009-05-29 15:25:45 -07:00
San Mehat
3d40729054 libsysutils: Add string.h to includes
Signed-off-by: San Mehat <san@google.com>
2009-05-07 08:49:30 -07: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