History log of /external/dhcpcd-6.8.2/dhcp.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b745ca9d2d2d127870e6245c50417fc778080e6a 08-Jan-2016 Samuel Tan <samueltan@google.com> [PATCH] UPSTREAM: Ensure that option length fits inside data length less option size

Ensure that option length fits inside data length less option size.
Thanks to Nico Golde for the report. Fixes CVE-2016-1504

http://roy.marples.name/projects/dhcpcd/ci/595883e2a431f65d?sbs=1

BUG: 26461547
Change-Id: I8bbb01eda998a0d7e552dcd4bf22db14c796d90e
/external/dhcpcd-6.8.2/dhcp.c
e942e091ac1efb0ee1916add2b12f64fdfd59476 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Add DBus RPC support

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Add-DBus-RPC-support.patch.

Porting the DBus support from version 5.1.4 and allow it to be
configurable through the package configuration. Removed the unused
and incomplete implemention for DBus method GetInterfaces and GetStatus.

Also: update the default lease file name to tailor around the
expectation of shill ("dhcpcd-%dev.lease).

Also: update the config file to meet shill's expectation.

BUG: 22956197
Change-Id: Ic729dffc6b14fed0b27ed0731c11ef609434e03c

Review URL: http://codereview.chromium.org/2428004
Review URL: http://codereview.chromium.org/2851022
Review URL: http://codereview.chromium.org/2851023
Review URL: http://codereview.chromium.org/2865017
Review URL: http://codereview.chromium.org/2965010
Review URL: http://codereview.chromium.org/2957010
Review URL: http://codereview.chromium.org/3060016
Reviewed-on: http://gerrit.chromium.org/gerrit/2228
Reviewed-on: https://gerrit.chromium.org/gerrit/22597
Reviewed-on: https://gerrit.chromium.org/gerrit/36716
Reviewed-on: https://gerrit.chromium.org/gerrit/38183
Reviewed-on: https://gerrit.chromium.org/gerrit/59967
Reviewed-on: https://chromium-review.googlesource.com/178462
Reviewed-on: https://chromium-review.googlesource.com/185086
Reviewed-on: https://chromium-review.googlesource.com/195269
Reviewed-on: https://chromium-review.googlesource.com/259072
/external/dhcpcd-6.8.2/dhcp.c
24aa62eefd9284fb94820093f6088607d42c4249 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Improve debugability

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Improve-debugability.patch.

Increase log level for certain log messages and add more log messages
to improve debugability.

BUG: 22956197
Change-Id: Idec6362a13d946831c8f0837a4cfe31c2671665e

Reviewed-on: https://gerrit.chromium.org/gerrit/42622
Reviewed-on: https://chromium-review.googlesource.com/185511
Reviewed-on: https://chromium-review.googlesource.com/186593
Reviewed-on: https://chromium-review.googlesource.com/206143
Reviewed-on: https://gerrit.chromium.org/gerrit/24835
/external/dhcpcd-6.8.2/dhcp.c
47d708b8f4e037f6f224f71ea5864c90184b4ffb 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] UPSTREAM: Fix ARP checking

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-UPSTREAM-Fix-ARP-
checking.patch.

Fix ARP checking logic and the usage of IN_IFF_TENTATIVE compiler flag
around ARP checking.

Upstream patch link:
http://roy.marples.name/projects/dhcpcd/info/fad4fae29d5d7dc9
http://roy.marples.name/projects/dhcpcd/info/9dcdaf2d1ef4a44d

BUG: 22956197
Change-Id: I1ba5c5d56a104cadf4566367408abb068b7e1268

Reviewed-on: https://chromium-review.googlesource.com/272614
/external/dhcpcd-6.8.2/dhcp.c
23ff6edd8b4ec796a32d36a3eca8a8d8c785b565 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Add RPC support for DHCPv4 client

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Add-RPC-support-for-
DHCPv4-client.patch.

Define a RPC interface for the daemon to interact with other
applications (command execution and status update), and integrate
it with the DHCPv4 client. Default to stub implementation for now
until new RPC mechanism is implemented and enabled.

Also add a new compiler flag "PASSIVE_MODE" which will be enabled
when a RPC mechanism is enabled (e.g. DBus). This compiler flag
will prevent the daemon from modifying system configurations
(e.g. routing table, interface address). The idea is that when
RPC is enabled, the daemon will provide configurations through
RPC, and the remote application will be the one responsible for
modifying system configurations.

Integration with DHCPv6 client will be added in the future.

BUG: 22956197
Change-Id: I7147d13e2cfab5c209c1ab862f33ef9d1b1dddaf

Reviewed-on: https://chromium-review.googlesource.com/208835
Review URL: http://codereview.chromium.org/3061018
/external/dhcpcd-6.8.2/dhcp.c
11464a5b08c94f30b5e7b59731e972b8c5bd4099 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Stop ARP probes when conflict is detected

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Stop-ARP-probes-when-
conflict-is-detected.patch.

Currently, an ARP state is create for each IP when performing duplicate
address detection. However, when duplicate address is detected, the ARP
state for that IP doesn't get cleanup, causing the ARP request to be
sent continuously with a random timeout. All ARP states would eventually
get cleanup when a duplicate address detection succeed.

So clean up the ARP state when duplicate address is detected to avoid
generating unnecessary traffics and causing any problems with the dhcp
state machine.

BUG: 22956197
Change-Id: I0e6a2f14eb3871872dee409b6b0c87ec19c58bed

Reviewed-on: https://chromium-review.googlesource.com/272614
/external/dhcpcd-6.8.2/dhcp.c
9177c6fae9fb7aecf0a0d378050788ba609a5a41 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Merge in DHCP options from the orignal offer

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Merge-in-DHCP-options-
from-the-original-offer.patch.

We've found that some APs respond to DHCP REQUEST messages with a
subset of the DHCP options that were present in the original DHCP
negotiation. Copy such options out of the stored lease and carry
them forward whenever a lease renewal succeeds.

BUG: 22956197
Change-Id: I9fa006535a67cdb3e25f7d02a8a81d051033922e

Reviewed-on: https://chromium-review.googlesource.com/195270
/external/dhcpcd-6.8.2/dhcp.c
9ae79b8946de6ac1e295417875f2ac7316dd0f80 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Fix OOB read in dhcpcd.

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Fix-OOB-read-in-dhcpcd.patch.

Should have done this sooner, but hey, late is better than never.

Based on https://googleplex-android-review.git.corp.google.com/#/c/588010/.

BUG: 22956197
Change-Id: I241cacc7c131237acbf1f8f011f1444e907eaebb

Reviewed-on: https://chromium-review.googlesource.com/242880
/external/dhcpcd-6.8.2/dhcp.c
5158c9dfe576a285663b4ba16828fd6e9b35779c 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Track and validate disputed addresses

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Track-and-validate-
disputed-addresses.patch.

Keep track of whether we have received a NAK response. If we
accept an ACK shortly after a NAK, although we accept this
address, it must be more carefully evaluated by using the "ARP
for self" method. If this method succeeds, the system should
proceed as normal (either doing a gateway ARP or sending the
success notification via D-Bus).

Moreover, if the "ARP self" method fails, it will DECLINE the
lease and restart the DHCP process. When examining any messages
from the DHCP server in this restarted session, ignore the
first OFFER if it is for the previously declined IP address.
In scenarios where there may be more than one conflicting DHCP
server on the network, this allows the possibility to accept
a more viable offer.

BUG: 22956197
Change-Id: I3f2e6cfbaf9c14ce09218e817e2dd35517d78f85

Reviewed-on: https://chromium-review.googlesource.com/208273
/external/dhcpcd-6.8.2/dhcp.c
b2d21e6cab5a0167e9e4d0698795b38f6c790ab3 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Accept an ACK after a NAK

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Accept-an-ACK-after-a-
NAK.patch.

When a NAK is received, wait for a response interval before
acting on it. In doing so, this allows for networks that
may have duelling DHCP servers which both consider themselves
authoritative on a network. Since other DHCP clients also
act in a similar manner, issues of this sort end up undetected
and network administrators thus consider this situation nominal.

BUG: 22956197
Change-Id: I8cceb03f8296abb4ee6bbdc87c222ae9234b3f5f

Reviewed-on: https://chromium-review.googlesource.com/208207
/external/dhcpcd-6.8.2/dhcp.c
4eb4220b0441f724353b049e4deab95be99698d5 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Be more permissive on NAKs

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Be-more-permissive-on-
NAKs.patch.

Previously, we'd reject NAKs that did not include a server ID.
Since we'd only check that a server ID was present, but did not
validate it against any stored state, the test is merely pedantic.
Moreover, some DHCP servers (e.g. OpenBSD 4.6) send NAK messages
without a server ID. [1]

To improve compatibility with real-world DHCP servers, drop the
check for the presence of a server ID.

BUG: 22956197
Change-Id: I11515205b89affde5bc61eb95e6615db450d6176

Reviewed-on: https://chromium-review.googlesource.com/194972
/external/dhcpcd-6.8.2/dhcp.c
dd90b01b5502dc66e00ea6a4d00ebdf77ea1eddc 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Fix dhcpcd running as a regular user.

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Fix-dhcpcd-running-as-a-
regular-user.patch.

Update the lease file permission to 0600 to prevent other
users from reading the lease file.

Moreover, also soften the log message shown when not running as root,
since by using Linux capabilities dhcpcd can run fine as a regular user.

BUG: 22956197

Change-Id: Ib6f4ae4a892c6f5697cd03e79e3aa018b80712fe

Reviewed-on: https://gerrit.chromium.org/gerrit/22644
/external/dhcpcd-6.8.2/dhcp.c
f20514bf582d08567217a3b06171bab5a11458ea 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] dhcpcd: Teach DHCP client to do unicast-ARP for gateway

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Teach-DHCP-client-to-do-
unicast-ARP-for-gatew.patch.

Implement RFC-4436 ("Detecting Network Attachment in IPv4 (DNAv4)").
Keep track of the MAC address of the default gateway in a file as
a part of the arpgw change ("-R" option), and append this info to
the end of the saved lease.

Implement a separate command line option ("-P") which will use
the MAC address stored in the lease to do a unicast ARP to the
default gateway saved in the lease. If this succeeds, notify
listeners that this succeeded, along with the contents of the lease,
but do not stop the normal DHCP process. This returns immediate,
fast feedback that our lease will likely work, but continues the
DHCP process so we know for sure.

BUG: 22956197
Change-Id: I4a494ff227b8bddac78e53c6354ebfa904bf384d

Reviewed-on: https://gerrit.chromium.org/gerrit/22643
/external/dhcpcd-6.8.2/dhcp.c
1c4088e958ed0fded0040bcb1d67b73159acfe8c 14-Aug-2015 Samuel Tan <samueltan@google.com> [PATCH] Optionally ARP for gateway IP address

Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Optionally-ARP-for-gateway-
IP-address.patch.

If the "arpgw" option is enabled in the config, we ARP for
the gateway provided in the DHCP response as part of the
process of testing our lease. If this fails (ARP times
out) we DECLINE our lease in the hope that a new lease will
work better. This can allow us to work around issues with
infrastructures where IP address / MAC pairs are placed on
a "dummy" VLAN under certain conditions. Requesting a
different IP can sometimes help resolve this.

The code is setup so that for each dhcpcd instance, the
"arpgw" function is allowed to only fail once. This is
to protect ourselves from mistakenly diagnosing a bad
system, or from looping endlessly if the system is truly
hosed.

BUG: 22956197
Change-Id: I0f49882e85b2cac08dd3bd0046cacf564f8b4749

Reviewed-on: http://gerrit.chromium.org/gerrit/3080
Reviewed-on: http://gerrit.chromium.org/gerrit/3531
/external/dhcpcd-6.8.2/dhcp.c
d7ed851d6fc26c5e7db96971dbe6b44342b97727 14-Aug-2015 Samuel Tan <samueltan@google.com> Import dhcpcd 6.8.2

This is a simple import of dhcpcd 6.8.2.

SRC URI: http://roy.marples.name/downloads/dhcpcd/dhcpcd-6.8.2.tar.bz2
SHA1 Hash: 134a7c06bffc20789fedd5c0d259145d2dc4f058
(on the private dhcpcd repo 'trunk')

BUG: 22956197
Change-Id: I701af1d1532725b1058640fcb7ddeab1c24a797e
/external/dhcpcd-6.8.2/dhcp.c