Commit graph

162 commits

Author SHA1 Message Date
Lorenzo Colitti
ef6454d3d3 Tolerate RTM_DELADDR messages from deleted interfaces.
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
2016-02-16 23:12:26 +09:00
Erik Kline
7e16cc15b5 Switch from using sockaddr to sockaddr_storage.
This is to ensure sufficient space is always available.

Change-Id: Ifa87b93ecdc90dcacbfb24446c872344da6703d3
2015-12-07 16:07:46 +09:00
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
Jeff Sharkey
55fd316ea7 Give SocketListener some FD_CLOEXEC.
Sockets love FD_CLOEXEC.

Bug: 19993667
Change-Id: I0d72a27e0f46b79843bb91ed48ebaf1c89484fd2
2015-04-01 22:31:40 -07: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
Elliott Hughes
a744b05984 Add missing <malloc.h> and <string.h> includes.
Change-Id: Ia41756e607663d056e7d2fdd7ecbec7e5841a913
2015-01-28 11:37:57 -08:00
Trevor Drake
d1ad84cfa4 Remove obsolete BUILD_TINY_ANDROID check from libsysutils makefile
Change-Id: I3cd1430b1555a5cd27b31ed3eebc1663f43e7b3b
2015-01-24 07:02:50 +00: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
Elliott Hughes
f6b62d0a7d Fix formatting in 4df4dfedf6.
Change-Id: I1ad219285cb1f4a39cfe2bdef224b78eff843317
2014-11-10 15:50:30 -08:00
Bo Huang
4df4dfedf6 When new error happend,then errno should be updated accordingly.
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-11-10 15:45:16 -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
03b00f3365 libsysutil: turn off -Werror
temporary to work out issue with git_mirror-asop-master build

Change-Id: Ie65c65abb0a70dc134fded15db8b9d98e1701edd
2014-04-30 17:01:39 -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
William Luh
28fa45858e Add prefx to netlink failure and dispatchCommand overflow logs.
Prefix ensures proper user-consent filter.

(cherry picked from commit 564244cd38)

Bug:5848002
Change-Id: Iee7287773f0af52c225a821ee0e9d643c83cc060
2014-04-29 13:16:26 -07:00
Mark Salyzyn
dfc47e8685 logd: libsysutils: logd startup outside init environment
Change-Id: I3426b6c3eebdd0c8258e966dcaaaa2825d7a23d1
2014-04-17 16:14:24 +00:00
Mark Salyzyn
581edc1b6c set /proc/sys/net/unix/max_dgram_qlen to large value
- 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-03-03 12:48:00 -08:00
Mark Salyzyn
4389588e8d libsysutil: frequent native crash /system/bin/vold
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 83fc720785)

BUG: 12796279
Change-Id: I14363630ada79c0a5b85bb6b2afd0a1c4d5c3109
2014-01-31 15:27:14 -08:00
Mark Salyzyn
44b99c22af libsysutils: SocketListener export release
* 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 d7ad4e409e)

Change-Id: I70ab37d5c22b02804aa3b4dfb26cc9b75291f8b6
2014-01-27 15:22:49 -08:00
Mark Salyzyn
23f04107dc libsysutils: Add iovec/runOnEachSocket
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 a6e965578e)

Signed-off-by: Nick Kralevich <nnk@google.com>
Signed-off-by: Mark Salyzyn <salyzyn@google.com>

Change-Id: I716f89c01b4cb7af900045c7e41fac1492defb06
2014-01-27 15:22:04 -08:00
Mark Salyzyn
e16baef4d2 libsysutils: Get rid of warnings
- UNUSED argument warnings
- Remove LOG_NDEBUG define

(cherry picked from commit 696f267ff5)

Change-Id: I48b0942adfdb7a46a7693e580bc6ed5a685b0d5b
2014-01-27 15:06:22 -08:00
Colin Cross
65dd88becc system/core: remove $(KERNEL_HEADERS) from includes
The kernel headers are already in the include path, and manually
adding them again will break on a multiarch build, where the
kernel headers may be different for each arch.

Change-Id: Ib13d96543f2c97b1b487a46e1748ceb2c5724169
2014-01-22 19:06:04 -08: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
Colin Cross
a9e08d3ed6 am 51a2e4d5: Merge "libsysutils: fix null pointer and memory leak issue"
* commit '51a2e4d5d44a6f788da207dff301356e16b4e283':
  libsysutils: fix null pointer and memory leak issue
2013-05-21 14:39:19 -07:00
Hong-Mei Li
544a7f7a36 libsysutils: fix null pointer and memory leak issue
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>
2013-05-20 17:30:11 +08:00
Ying Wang
083b5ccba3 Add liblog
Bug: 8580410
Change-Id: Iab3a9b4307f207c14a04a922cc7350c54e60e9ad
2013-04-09 22:03:45 -07:00
Josef Kindberg
6d358ae44c libsysutils: Increase command buffersize and command args
Needed to support tethering of multiple remote Bluetooth devices.

Change-Id: I9f736affd83226e8b2fa4f0faacd3654175dd8c9
Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
2012-11-12 14:40:21 +01:00
Robert Greenwalt
6f523cda13 am 7bb1b958: am ff856a2b: Merge "Add error handling to SocketClient::sendData"
* commit '7bb1b9585d2d61beaf05c997971aee27f87ad3f7':
  Add error handling to SocketClient::sendData
2012-05-30 15:29:07 -07:00
Mattias Falk
2e5fcd08ac Add error handling to SocketClient::sendData
Return failure and set errno if mSocket isn't valid.

Change-Id: I579114d435db46d0bb5682167ef34bebe061a8f8
2012-05-29 14:19:06 +02: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
Robert Greenwalt
594947793c Add ability to quote responses as needed.
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-20 17:41:42 -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
Geremy Condra
d98533a012 Added netlink failure logging to NetlinkListener.cpp
This depends on If2f00708a1dd6196c415b1ebc2a7eeb72399a90e

Change-Id: If6c63e46f906b94f4778eb5e78123d8efe1710d4
2012-03-29 16:38:58 -07:00
Selim Gurun
6ac770fc52 Do not generate SIGPIPE errors in SocketCLient.
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-12 10:20:42 -07:00
Robert Greenwalt
7599bfcf13 Fix pointer arith.
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-09 11:55:51 -08:00
Selim Gurun
7bf4c45f84 Add a utility function to send a code + binary msg
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-07 16:19:52 -08:00
Robert Greenwalt
8702bb17f4 New NativeDaemonConnector protocol adds a seqnum.
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-03-05 11:44:43 -08:00
Guang Zhu
a8185a622e Revert "New NativeDaemonConnector protocol adds a seqnum."
Reverting because it seems to break `adb reboot`

This reverts commit dc58e73071.

Change-Id: Ib8cc4379254694398cbb7f3e7a64c20e1ed8c1ba
2012-02-07 19:26:54 -08:00
Robert Greenwalt
dc58e73071 New NativeDaemonConnector protocol adds a seqnum.
Allows for one socket to be multiplexed for multiple requests.
bug:5864209

Change-Id: I934c88da25d95e093371f455442bdf2f0ed7a4f4
2012-02-07 16:00:07 -08:00
Nick Kralevich
6bbaaa6301 libsysutils: log dispatchCommand overflow.
Change-Id: Iefd3f7cc170c1fe65209c6ffe10debc21aed0c7f
2011-11-18 08:46:54 -08:00
Irfan Sheriff
477df68854 Remove log spam
Bug: 5533986
Change-Id: I3d8108e2f65ce6513ac8b2d14541eaa5e4fc5da1
2011-10-28 23:57:32 -07:00
Xianzhu Wang
4520246d35 Fix SocketListener socket leak issue.
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-09-29 13:42:32 +08: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
Jeff Brown
29e1e7393d Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: I2fcf31af681d92880e5d31a46d5f6777f7ca1977
2011-07-11 22:12:32 -07:00
Mike J. Chen
2a56688da9 Workaround Motorola ril.so incompatiblity with Netlink changes
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-23 18:59:45 -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
Nick Kralevich
57de8b8f27 rename uevent_checked_recv to uevent_kernel_multicast_recv
Change-Id: I1839627490080efcbb7269699709064856312f8b
2011-05-11 14:58:24 -07:00
Nick Kralevich
531312e491 NetlinkListener: eliminate duplicate code
The checks in this code duplicate uevent_checked_recv().
Use that instead.

Change-Id: I2c48bcf4372f0975c27a63d929cae73e16422faf
2011-04-29 16:49:22 -07:00
Nick Kralevich
02c8a9cf59 am 18f6d964: am f819d023: Merge "libsysutils: SocketListener: handle recv errors more gracefully."
* commit '18f6d964cbee483106da5c96a8c067a948324da7':
  libsysutils: SocketListener: handle recv errors more gracefully.
2011-04-27 09:55:31 -07:00
Nick Kralevich
18f6d964cb am f819d023: Merge "libsysutils: SocketListener: handle recv errors more gracefully."
* commit 'f819d0233646668b06de36a787979e3b180d6c48':
  libsysutils: SocketListener: handle recv errors more gracefully.
2011-04-27 09:40:04 -07:00
Vernon Tang
8795007a4a libsysutils: SocketListener: handle recv errors more gracefully.
Don't close the socket when onDataAvailable returns false if the socket
is connectionless.

Change-Id: Ie19497f5928144c463d92aa72ba517e675549ea6
2011-04-27 14:01:27 +10:00
Nick Kralevich
a265e5a352 am d94bbc32: am 6bc08280: Validate sender credentials on netlink msg receive
* commit 'd94bbc326ab0e9ceca6f3f90a2864e40bb584c07':
  Validate sender credentials on netlink msg receive
2011-04-19 15:40:50 -07:00
Nick Kralevich
6bc0828010 Validate sender credentials on netlink msg receive
Verify that netlink messages are actually from the kernel,
and not from a userspace program.

This is a manual cherry-pick from b620a0b1c7

Change-Id: I237f0a5cb56393bb3aab64a7ae5898f2bdc95cef
2011-04-19 12:33:44 -07:00
Nick Kralevich
4aadb7f6df am b620a0b1: Validate sender credentials on netlink msg receive
* commit 'b620a0b1c7ae486e979826200e8e441605b0a5d6':
  Validate sender credentials on netlink msg receive
2011-04-18 16:29:45 -07:00
Nick Kralevich
b620a0b1c7 Validate sender credentials on netlink msg receive
Verify that netlink messages are actually from the kernel,
and not from a userspace program.

Change-Id: I709c0efe9ba0258f6d79ebcde531d7f7bbe780b2
2011-04-18 15:55:59 -07:00
Brad Fitzpatrick
4fecade5f2 am cb1e616e: am 7c556549: Merge changes Icdefb5ff,Icd7f5f03
* commit 'cb1e616e3c108a9c8b159bb95c3356acf5797ba2':
  Fix potential race introduced in Icd7f5f03
  SocketClient: add optional reference counting
2011-03-29 08:45:04 -07:00
Brad Fitzpatrick
3549b0dc28 Fix potential race introduced in Icd7f5f03
Digit wrote:

"You probably don't want to close the socket here without updating
c->socket as well. Otherwise, another thread holding a handle to the
client after the c->decRef() could end up sending a message to a
different socket, if the file descriptor index is reused by another
client in the meantime."

Change-Id: Icdefb5ffc0c7607325d7db761e1f04e5d868bfb7
2011-03-22 14:03:11 -07:00
Brad Fitzpatrick
13aa8ad445 SocketClient: add optional reference counting
Needed to fix a race in netd.

Bug: 3438459
Change-Id: Icd7f5f035510235f733a25c0621479d3e644b152
2011-03-22 14:03:08 -07:00
David 'Digit' Turner
15d09854a8 libsysutils: Fix a file descriptor leak.
The recent refactoring of the select() loop in SocketListener
missed a close() of the file descriptor when the onDataAvailable()
callback returns false.

Change-Id: I767caefab4b98ab350f2db2497ee2bd630f20850
2011-03-22 14:03:04 -07:00
David 'Digit' Turner
100c0e2dab libsysutils: Fix race condition in SocketListener thread.
+ Handle EINTR in accept(), write() and select()
+ Fix a memory leak when deleting the mClients list
+ Fix typo in SocketListener.h

Change-Id: Ie68bb3e2dbefe0dfdaa22a5cd06a42dbc4c0f8aa
2011-03-22 14:02:51 -07:00
David 'Digit' Turner
01feae2d7c libsysutils: Handle EINTR in SocketClient::sendData()
+ Improve allocation code in sendMsg(code,msg,addErrno)

Change-Id: Ib5fe84bec1a167c369e7ba759acea395e832f6b5
2011-03-22 14:02:18 -07:00
Brian Swetland
1aa59a83b5 libsysutils: do not build for TINY_ANDROID
This depends on frameworks/... :-(

Technically it doesn't belong in system/core at all, but of course there are
things in system/core that depend on it, so for now we'll hack around this.

Change-Id: I6aa437f18e1c09bd10fbd3333cf6998a0b6140c6
2011-01-23 19:13:23 -08:00
David 'Digit' Turner
b913b5170f libsysutils: Fix a file descriptor leak.
The recent refactoring of the select() loop in SocketListener
missed a close() of the file descriptor when the onDataAvailable()
callback returns false.

Change-Id: I767caefab4b98ab350f2db2497ee2bd630f20850
2011-01-21 19:25:51 +01:00
David 'Digit' Turner
af91e4ef09 libsysutils: Handle EINTR in FrameworkClient.cpp
+ get rid of strcpy + strcat calls.

Change-Id: I47778f3d14aa961474648cddf6510b761f124e74
2011-01-19 02:18:40 +01:00
David 'Digit' Turner
c6b0def5f0 libsysutils: Fix potential overwrites in FrameworkListener
+ Handle EINTR in read()

Change-Id: If7d486dd4fb5666ce16ef36dca5f417da23e0b73
2011-01-19 02:18:40 +01:00
David 'Digit' Turner
cf9e1003ce libsysutils: Fix race condition in SocketListener thread.
+ Handle EINTR in accept(), write() and select()
+ Fix a memory leak when deleting the mClients list
+ Fix typo in SocketListener.h

Change-Id: Ie68bb3e2dbefe0dfdaa22a5cd06a42dbc4c0f8aa
2011-01-19 02:18:40 +01:00
David 'Digit' Turner
af61509b50 libsysutils: Handle EINTR in SocketClient::sendData()
+ Improve allocation code in sendMsg(code,msg,addErrno)

Change-Id: Ib5fe84bec1a167c369e7ba759acea395e832f6b5
2011-01-19 02:18:40 +01:00
David 'Digit' Turner
af174f0039 libsysutils: Fix wait loop in ServiceManager::start and ::stop
Also check the service name length.

Change-Id: Iffb82aa9e71dd96c85c05c4e2016930f4847c1e8
2011-01-19 02:18:40 +01:00
David 'Digit' Turner
b59539d395 libsysutils: Handle EINTR in NetlinkListener
Change-Id: Id881a9ca0f0e54f7c78b3609120bedec00d6671c
2011-01-19 02:18:40 +01: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
Brad Fitzpatrick
b9634d05cf Permit 0 length writes.
Change-Id: I087d0074c8d9e13ce814187475966da94f693fc0
2011-01-06 11:16:15 -08:00
Brad Fitzpatrick
a2a1f3149f Let SocketClient users write binary data to clients.
This is a dependency for the DNS proxy CLs.

This CL also adds a new socket for the netd process to inherit which
is owned by the inet group.  (so only apps with the INTERNET
permission can use the DNS proxy...)

Change-Id: I8a51924e0ed56c6066f77e6f1b02d39bdadac51e
2011-01-06 11:09:55 -08:00
Olivier Bailly
b93e5812fa Add missing headers for compilation on x86 targets
Change-Id: I5f4dc797b353a0f01fa00d38375ec303bf863254
2010-11-17 11:47:23 -08:00
Brad Fitzpatrick
16ae478af4 Permit 0 length writes.
Change-Id: I087d0074c8d9e13ce814187475966da94f693fc0
2010-11-02 10:56:15 -07:00
Brad Fitzpatrick
8c5669f9f9 Let SocketClient users write binary data to clients.
This is a dependency for the DNS proxy CLs.

This CL also adds a new socket for the netd process to inherit which
is owned by the inet group.  (so only apps with the INTERNET
permission can use the DNS proxy...)

Change-Id: Ic3475c697913ba85805b4e49801b65e7a1d59289
2010-10-27 10:27:34 -07:00
Kenny Root
1db75e7b9b am 6fd75635: Merge "Fetch peer credentials for local sockets" into gingerbread
Merge commit '6fd75635d820754295557c300ccee89c643864cc' into gingerbread-plus-aosp

* commit '6fd75635d820754295557c300ccee89c643864cc':
  Fetch peer credentials for local sockets
2010-09-14 14:39:18 -07:00
Kenny Root
30abb7234d Fetch peer credentials for local sockets
Fetch the PID, UID, and GID of the remote side of a local socket
connection in case any users of this library class want to check it.

Change-Id: Ia3230e6bc68ab6f93160df9f5996d2bf744b872c
2010-09-14 14:35:10 -07:00
Brad Fitzpatrick
0e6242f7e2 am 40c2b7cb: Merge "Add missing lock in SocketListener." into gingerbread
Merge commit '40c2b7cbedff612ce8bc7a51589a952cc1d047b6' into gingerbread-plus-aosp

* commit '40c2b7cbedff612ce8bc7a51589a952cc1d047b6':
  Add missing lock in SocketListener.
2010-09-14 10:46:35 -07:00
Brad Fitzpatrick
40c2b7cbed Merge "Add missing lock in SocketListener." into gingerbread 2010-09-14 10:44:15 -07:00
Kenny Root
c3fa614928 am f31d2ed1: Return false on socket read error
Merge commit 'f31d2ed1fd3a39a92bccc12eb66728594290ef3b' into gingerbread-plus-aosp

* commit 'f31d2ed1fd3a39a92bccc12eb66728594290ef3b':
  Return false on socket read error
2010-09-14 10:24:26 -07:00
Brad Fitzpatrick
86d01dec4b Add missing lock in SocketListener.
Change-Id: I3d97a06381fce67ef13b1ccdeaa4e8e2830ab2aa
2010-09-14 10:22:14 -07:00
Kenny Root
f31d2ed1fd Return false on socket read error
FrameworkListener was returning the errno from a function marked as
returning bool which caused an implicit conversion to true since we were
in an error block where errno was set to something non-zero.

This caused the clients that had errors to stick around forever and not
get removed from the set of file descriptors that SocketListener was
listening to.

Change-Id: Ia27a4cac47459f3a3c2bb6a7f66803a3165c894a
2010-09-14 09:55:22 -07: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
Jean-Baptiste Queru
b029e92428 merge from open-source master 2009-10-14 08:19:24 -07: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
c4a895b709 nexus: Rollup update for nexus
nexus: Change field separator from : to ' '

Signed-off-by: San Mehat <san@google.com>

nexus: Add some prototypes for stuff to come

Signed-off-by: San Mehat <san@google.com>

nexus: Add some TODOs

Signed-off-by: San Mehat <san@google.com>

libsysutils: Put a proper token parser into the FrameworkListener which
supports minimal \ escapes and quotes

Signed-off-by: San Mehat <san@google.com>

nexus: Fix a lot of bugs

Signed-off-by: San Mehat <san@google.com>

libsysutils: Remove some debugging
Signed-off-by: San Mehat <san@google.com>

nexus: Send broadcasts for supplicant state changes

Signed-off-by: San Mehat <san@google.com>

nexus: Plumb DHCP listener state changes to NetworkManager

Signed-off-by: San Mehat <san@google.com>

nexus: Make the SupplicantState strings more parsable

Signed-off-by: San Mehat <san@google.com>

nexus: Broadcast a message when dhcp state changes.

Signed-off-by: San Mehat <san@google.com>

nexus: Add a few new response codes

Signed-off-by: San Mehat <san@google.com>

nexus: Rename ErrorCode -> ResponseCode

Signed-off-by: San Mehat <san@google.com>

nexus: Add DHCP event broadcasting. Also adds the framework for
tracking supplicant 'searching-for-AP' state

Signed-off-by: San Mehat <san@google.com>

nexus: REmove WifiScanner

Signed-off-by: San Mehat <san@google.com>

nexus: Change the way scanning works. scanmode can now be selected
independantly of triggering a scan. Also adds rxfilter support

Signed-off-by: San Mehat <san@google.com>

nexus: Add support for configuring bluetooth coexistence scanning and modes

Signed-off-by: San Mehat <san@google.com>

nexus: use case insensitive match for property names

Signed-off-by: San Mehat <san@google.com>

nexus: Rollup of a bunch of stuff:
    - 'list' command now takes an argument to match against
    - InterfaceConfig has been moved into the Controller base (for now)
    - DhcpClient now has some rudimentry locking
    - process 'ADDRINFO' messages from dhcpcd
    - Drop tertiary dns

Signed-off-by: San Mehat <san@google.com>

nexus: Clean up some of the supplicant variable parsing and add 'wifi.current'

Signed-off-by: San Mehat <san@google.com>

nexus: Add driver-stop/start, initial suspend support

Signed-off-by: San Mehat <san@google.com>

nexus: Add Controller suspend/resume callbacks, as well as locking

Signed-off-by: San Mehat <san@google.com>

nexus: Make ARP probing configurable for DhcpClient

Signed-off-by: San Mehat <san@google.com>

nexus: Add linkspeed / rssi retrieval

Signed-off-by: San Mehat <san@google.com>

nexus: Add WifiStatusPoller to track RSSI/linkspeed when associated

Signed-off-by: San Mehat <san@google.com>

nexus: Disable some debugging and add 'wifi.netcount' property

Signed-off-by: San Mehat <san@google.com>

nexus: Replace the hackish property system with something more flexible with namespaces

Signed-off-by: San Mehat <san@google.com>

libsysutils: Fix a few bugs in SocketListener

Signed-off-by: San Mehat <san@google.com>

nexus: PropertyManager: Add array support

Signed-off-by: San Mehat <san@google.com>

nexus: Clean up properties
Signed-off-by: San Mehat <san@google.com>

nexus: WifiController: Change name of 'CurrentNetwork' property

Signed-off-by: San Mehat <san@google.com>
2009-07-10 14:23:51 -07:00