summaryrefslogtreecommitdiff
path: root/libsysutils/src
AgeCommit message (Collapse)Author
2016-02-16Tolerate RTM_DELADDR messages from deleted interfaces.Lorenzo Colitti
When an interface is deleted (which can happen, for example, to the tun interfaces used for VPN and 464xlat), the kernel sends RTM_DELADDR messages for all its IP addresses. Currently we ignore these because we cannot fetch the interface name. Instead, pass them up with an empty interface name so that NetlinkHandler can do something useful for them, such as destroy connections on the IP addresses that are being deleted. Bug: 26976388 Change-Id: I2ced7e389228f9d665d0a87d97bd3452c8c0c98b
2015-12-07Switch from using sockaddr to sockaddr_storage.Erik Kline
This is to ensure sufficient space is always available. Change-Id: Ifa87b93ecdc90dcacbfb24446c872344da6703d3
2015-07-28Fix incorrectly sized buffer.Erik Kline
Also: use a more correct size type. Bug: 21562630 Bug: 21764392 Bug: 22464419 Change-Id: I9a9cf64f0481670828fac707e00196e222d0311e
2015-06-18Qualify IPv6 link-local DNS servers with an interface nameErik Kline
Bug: 21562630 Bug: 21764392 Change-Id: I7d271ae0f3fd92f70049017d38ccc15e3c1dda83
2015-04-01Give SocketListener some FD_CLOEXEC.Jeff Sharkey
Sockets love FD_CLOEXEC. Bug: 19993667 Change-Id: I0d72a27e0f46b79843bb91ed48ebaf1c89484fd2
2015-03-20Revert "Sigh, more vendors linking against hidden APIs."Vineeta Srivastava
This reverts commit 31837298166e678d8e9c9fba1b30aea5abf1350f. Change-Id: I5c041d7438b64c4c258c414ca9a133075999e1b6
2015-03-16Sigh, more vendors linking against hidden APIs.Jeff Sharkey
Bug: 19762346 Change-Id: I6c0823bf69e3f7e854ffea7b5483d09bb7359ff6
2015-03-13Define enum class for NetlinkEvent actions.Jeff Sharkey
This lets us use it for switch statements, and gives us stronger type safety. Change-Id: Idb3ad7098657a09f13c95dc7070611d35ede66ae
2015-01-28Add missing <malloc.h> and <string.h> includes.Elliott Hughes
Change-Id: Ia41756e607663d056e7d2fdd7ecbec7e5841a913
2015-01-15Extend to receive NFLOG packets.Jeff Sharkey
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
2014-11-10Fix formatting in 4df4dfedf6beef891d05d4e80704f5f4a594a885.Elliott Hughes
Change-Id: I1ad219285cb1f4a39cfe2bdef224b78eff843317
2014-11-10When new error happend,then errno should be updated accordingly.Bo Huang
Otherwise, need to keep previous errno. Reproduced steps: pre-condition: DUT support external SDcard or Usb mass storage; 1. Insert blank(no partition) SDcard or UMS to DUT; Expected result: Should prompt user with storage error. Test result: There is no notification for error. Error log: 01-01 01:06:49.239 I/fsck_msdos( 200): fsck_msdos terminated by exit(8) 01-01 01:06:49.239 E/Vold ( 200): /dev/block/vold/179:16 failed FS checks (I/O error) 01-01 01:06:49.239 D/Vold ( 200): Volume sdcard1 state changing 3 (Checking) -> 1 (Idle-Unmounted) 01-01 01:06:49.239 W/Vold ( 200): Returning OperationFailed - no handler for errno 0) Root cause analysis: 1.Volume::setState will call senBroadcase to send out state notification; 2.Finally, SocketClient::sendDataLockedv was called to sent message. In sendDataLockedv funtion, when current == iovcnt, e is 0 by default. So Vold get incorrect errno. Change-Id: Icb32a4193f02f22b5e3feaba177bc278f8f1f41b Signed-off-by: Bo Huang <bo.b.huang@intel.com>
2014-06-21Support parsing netlink route messages.Lorenzo Colitti
Bug: 9180552 Change-Id: I4a36d869ac692647fb226d0912285bdf2ffcb1fa
2014-06-21Improvements to netlink event parsing.Lorenzo Colitti
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-05-01libsysutil: turn on -Werror (part deux)Mark Salyzyn
- x86_64 format warnings Change-Id: I81c2702f564bcada946f6a10f34bbf34c90f766b
2014-04-30libsysutils: turn on -WerrorMark Salyzyn
- Deal with some -Wunused / -Wunused-variable issues Change-Id: I428a0032a8743c68c97f528d5f305ba63fee1d29
2014-04-17logd: libsysutils: logd startup outside init environmentMark Salyzyn
Change-Id: I3426b6c3eebdd0c8258e966dcaaaa2825d7a23d1
2014-03-03set /proc/sys/net/unix/max_dgram_qlen to large valueMark Salyzyn
- init: set /proc/sys/net/unix/max_dgram_qlen to 300 - libsysutils: Add listen backlog argument to startListener - logd: set listen backlog to 300 Change-Id: Id6d37d6c937ba2d221e76258d89c9516619caeec
2014-01-31libsysutil: frequent native crash /system/bin/voldMark Salyzyn
regression from commit a6e965578e44f9ae5f98de822ba5decec381dffc * wrap writev with sigaction SIG_IGN SIGPIPE to emulate the send(,,,MSG_NOSIGNAL) call it had replaced. (cherry pick from commit 83fc720785c4e40f3341daf7c0bf5ee99261fee9) BUG: 12796279 Change-Id: I14363630ada79c0a5b85bb6b2afd0a1c4d5c3109
2014-01-27libsysutils: SocketListener export releaseMark Salyzyn
* Foreground thread (legacy) closes connection by reporting false return value for onDataAvailable. * Background thread can choose instead to close the connection asynchronously by calling release, must return true for the onDataAvailable method. (cherry picked from commit d7ad4e409eaac53db3a9789060097b712850b337) Change-Id: I70ab37d5c22b02804aa3b4dfb26cc9b75291f8b6
2014-01-27libsysutils: Add iovec/runOnEachSocketMark Salyzyn
SocketClient: * Replace sendDataLocked with sendDataLockedv which takes an iovec. * Add a version of sendData, sendDatav, which takes an iovec. * do not preserve iovec content through sendDatav SocketListener: * Add runOnEachSocket, which allows to to specify a SocketClientCommand to run individually on each socket. This allows you to do broadcast-like actions customized for each individual socket. * Client safe list reference counting for sendBroadcast & runOnEach Socket (cherry picked from commit a6e965578e44f8ae5f98de822ba5decec381d5fc) Signed-off-by: Nick Kralevich <nnk@google.com> Signed-off-by: Mark Salyzyn <salyzyn@google.com> Change-Id: I716f89c01b4cb7af900045c7e41fac1492defb06
2014-01-27libsysutils: Get rid of warningsMark Salyzyn
- UNUSED argument warnings - Remove LOG_NDEBUG define (cherry picked from commit 696f267ff5a1e6227c2f5784dae60c190e0228b8) Change-Id: I48b0942adfdb7a46a7693e580bc6ed5a685b0d5b
2013-11-22Merge commit '536dea9d61a032e64bbe584a97463c6638ead009' into HEADThe Android Open Source Project
Change-Id: I5c469a4b738629d99d721cad7ded02d6c35f56d5
2013-11-20Support parsing RDNSS ND options from netlink.Lorenzo Colitti
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 b185e90dcc6ac111bff908edcc6d89fd6b37dc11] Bug: 9180552 Change-Id: I6c532c8f0ceef3afdc977a431a036df398013e1a
2013-11-20Switch back to subsystem "net" for netlink events.Lorenzo Colitti
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 f34861346d5c207912075fba9874090e4c947869] Bug: 10433320 Change-Id: Ibf30efb426949dfd02304cc1d9adb1c005a539a6
2013-11-20Get rid of an infinite loop in NetlinkEvent.cpp.Lorenzo Colitti
[Cherry-pick of 3984276ce47c965ad02a522280a139e0a0c7e5cf] Bug: 10358527 Bug: 10263310 Bug: 10232006 Change-Id: I750e4bdf2000040adf214d6a772591d7bd25b350
2013-11-20Parse IP address changes in NetlinkEvent.Lorenzo Colitti
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 a4b4e9ad8e35ab424e61d76ebe6654445fc61e63] Bug: 10232006 Change-Id: I93a50e8de17014e118a42f5cc0eb90a0cbfa73cc
2013-09-03Switch back to subsystem "net" for netlink events.Lorenzo Colitti
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-08-17Get rid of an infinite loop in NetlinkEvent.cpp.Lorenzo Colitti
Bug: 10358527 Bug: 10263310 Bug: 10232006 Change-Id: I750e4bdf2000040adf214d6a772591d7bd25b350
2013-08-14Parse IP address changes in NetlinkEvent.Lorenzo Colitti
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-05-20libsysutils: fix null pointer and memory leak issueHong-Mei Li
In SocketClient::quoteArg function 1. Fix potential null pointer accessing issue 2. Fix potential memory leak introduced by realloc fail Change-Id: I1ca0f9089290d43452e9a71428244545f4ed866b Signed-off-by: Hong-Mei Li <a21834@motorola.com>
2012-11-12libsysutils: Increase command buffersize and command argsJosef Kindberg
Needed to support tethering of multiple remote Bluetooth devices. Change-Id: I9f736affd83226e8b2fa4f0faacd3654175dd8c9 Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
2012-05-30am 7bb1b958: am ff856a2b: Merge "Add error handling to SocketClient::sendData"Robert Greenwalt
* commit '7bb1b9585d2d61beaf05c997971aee27f87ad3f7': Add error handling to SocketClient::sendData
2012-05-29Add error handling to SocketClient::sendDataMattias Falk
Return failure and set errno if mSocket isn't valid. Change-Id: I579114d435db46d0bb5682167ef34bebe061a8f8
2012-04-26Revert "libsysutils: NetlinkEvent: add support for interface xt_IDLETIMER ↵JP Abgrall
events." This reverts commit 731d831e91d5d9f8b15ca95367977abe35967166. Now that the xt_IDLETIMER uses the KOBJECT_UEVENT netlink, this change is not needed anymore.
2012-04-20Add ability to quote responses as needed.Robert Greenwalt
It's up to the protocol to know when quotes are required. In the future the response should probably all be binary blobs with lengths. bug:6353048 Change-Id: I3f9b48ab0f4e6746d75cdc9c0c84d33f38f63661
2012-04-11libsysutils: NetlinkEvent: add support for interface xt_IDLETIMER events.Ashish Sharma
xt_IDLETIMER events are used to infer the interface (radio) state based on a inactivity timeout value. Change-Id: I755eb54a048ca1c6ce0c646564d61188d8241851
2012-03-29Added netlink failure logging to NetlinkListener.cppGeremy Condra
This depends on If2f00708a1dd6196c415b1ebc2a7eeb72399a90e Change-Id: If6c63e46f906b94f4778eb5e78123d8efe1710d4
2012-03-12Do not generate SIGPIPE errors in SocketCLient.Selim Gurun
This change is to make sure the users of library does not crash if they are not handling SIGPIPE properly. Change-Id: I4ea80d6bfc26a4bca6b901959ae3060b059d46d3
2012-03-09Fix pointer arith.Robert Greenwalt
Sending 3digit code, null, binary-length and data. Current code sends 3digit code, space, null, binary-length, binary-data. The space should not be sent. Change-Id: I1df00a3e70805b39b6105966c7f3c613461a6858
2012-03-07Add a utility function to send a code + binary msgSelim Gurun
Add a utility function to SocketClient to send a c-string code prepended to a binary message. This is necessary to be able to send a binary message while keeping compatible with underlying text-based protocol. Change-Id: Ifc6562003a687577d7deb50260533a5147ae4f97
2012-03-05New NativeDaemonConnector protocol adds a seqnum.Robert Greenwalt
Allows for one socket to be multiplexed for multiple requests. Doesn't use command sequence numbers for broadcasts - would make no sense. Doesn't alter current default behavior so OEM's using these classes won't notice a difference. bug:5864209 Change-Id: Ie3b19c4f81eea868569229a365c8cb7de249c2dd
2012-02-07Revert "New NativeDaemonConnector protocol adds a seqnum."Guang Zhu
Reverting because it seems to break `adb reboot` This reverts commit dc58e73071aa829a5038caf37211f6b3e2d7b275. Change-Id: Ib8cc4379254694398cbb7f3e7a64c20e1ed8c1ba
2012-02-07New NativeDaemonConnector protocol adds a seqnum.Robert Greenwalt
Allows for one socket to be multiplexed for multiple requests. bug:5864209 Change-Id: I934c88da25d95e093371f455442bdf2f0ed7a4f4
2011-11-18libsysutils: log dispatchCommand overflow.Nick Kralevich
Change-Id: Iefd3f7cc170c1fe65209c6ffe10debc21aed0c7f
2011-10-28Remove log spamIrfan Sheriff
Bug: 5533986 Change-Id: I3d8108e2f65ce6513ac8b2d14541eaa5e4fc5da1
2011-09-29Fix SocketListener socket leak issue.Xianzhu Wang
The problem was: if a socket is shared between SocketListener and another thread, only if the last reference is removed by SocketListener can the socket be closed, otherwise the socket will leak. This sometimes happens in netd's dnsproxyd. This change let the SocketClient own the socket and close the socket when the SocketClient is destructed. Change-Id: I2865fbfe9ee4d8b3e43d7e02919dbb2d261f70de
2011-07-14NetlinkEvents: adding support for iptables' quota2 NFLOG messages.JP Abgrall
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-06-23Workaround Motorola ril.so incompatiblity with Netlink changesMike J. Chen
To workaround a binary incompatiblity with Motorola's ril.so, I had to temporarily provide the old constructor for NetlinkListener as well as a new contructor that takes an additional format argument. There's still a slight chance of a problem because the size of the NetlinkListener has changed with the addition of the mFormat member, but so far I've not seen any obvious problem with that incompatiblity. Another way we could have worked around the incompatiblity is to have netd (the main user of the new format argument to NetlinkListener) keep track of the format itself in it's NetlinkHandler (derived from NetlinkListener) and supply it's own version of onDataAvailable() that's almost 100% identical to NetlinkListener's except for the decode() call. That would allow us not to modify NetlinkListener at all. Worth considering but I think it's more properly divided right now and we just have to make Motorola fix their code (and ideally not use our private APIs). This change should be reverted when Motorola's has fixed their ril to either not use our private APIs or to use our updated ones. Change-Id: I255cca6908444e56cbbbed7eef1fa0cf1d8f0918 Signed-off-by: Mike J. Chen <mjchen@google.com>
2011-06-23Cleanup NetlinkListener and NetlinkEventMike J. Chen
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>