Commit Graph

110 Commits

Author SHA1 Message Date
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
San Mehat c73a3a5771 libsysutils: Move to a null terminated string protocol using space as a field separator.
Also removes some debugging

Signed-off-by: San Mehat <san@google.com>
2009-06-15 14:06:03 -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 db01754579 libsysutils: const correctness fixes + remove some debugging
Signed-off-by: San Mehat <san@google.com>
2009-05-20 17:16:05 -07:00
San Mehat c41d1c8074 libsysutils: Introduce 'ServiceManager', for starting/stopping init services
Signed-off-by: San Mehat <san@google.com>
2009-05-15 10:40:23 -07:00
San Mehat df6c1b91e3 libsysutils: General clean up + disable build in simulator builds
Signed-off-by: San Mehat <san@google.com>
2009-05-13 09:10:01 -07:00
Andy McFadden 6fc287b6f6 Fix sim build (need explicit -lpthread). 2009-05-13 07:25:03 -07:00
San Mehat dbdb0db516 libsysutils: Fix bug where we'd leak our control pipes when closing down a listener
Signed-off-by: San Mehat <san@google.com>
2009-05-12 15:50:26 -07:00
San Mehat d530592848 libsysutils: Send command arguments to the command, not the command again :P
Signed-off-by: San Mehat <san@google.com>
2009-05-12 14:35:15 -07:00
San Mehat d768066ef5 libsysutils: Tweak SocketListener and friends
Signed-off-by: San Mehat <san@google.com>
2009-05-12 14:02:32 -07:00
San Mehat fa644ffe94 libsysutils: Add multiple client support and fix some bugs 2009-05-10 09:26:42 -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