Re: dhcpcd and secondary interface
Kobi Cohen-Arazi
Sun Feb 10 02:32:27 2013
Re-sending. I missed replying to dhcpcd-discuss group.
Roy,
Here is what I just tried from the adb shell:
shell@android:/ # netcfg wlan0 down
shell@android:/ # ip addr show wlan0
15: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
qlen 100
link/ether 00:0a:f5:d3:64:70 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.71/24 brd 192.168.1.255 scope global wlan0
inet6 fe80::20a:f5ff:fed3:6470/64 scope link
valid_lft forever preferred_lft forever
shell@android:/ # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.580 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.15 ms
shell@android:/ # /data/busybox/ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:0A:F5:D3:64:70
inet addr:192.168.1.71 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20a:f5ff:fed3:6470/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:895127 errors:0 dropped:0 overruns:0 frame:0
TX packets:895300 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:75210056 (71.7 MiB) TX bytes:87733179 (83.6 MiB)
Bingo ;-)
Seems like bringing the interface down should work.
What do you think?
Thanks,
Kobi
>
> On Fri, Feb 8, 2013 at 12:02 PM, Kobi Cohen-Arazi <
> kobi.cohenarazi@xxxxxxxxx> wrote:
>
>>
>>
>>
>> On Fri, Feb 8, 2013 at 10:38 AM, Roy Marples <roy@xxxxxxxxxxxx> wrote:
>>
>>> On 08/02/2013 18:01, Kobi Cohen-Arazi wrote:
>>>
>>>> dhcpcd should remove the old ip address fine and should do this when
>>>>> the interface is down, however there are some scenarios where this won't
>>>>> occur.
>>>>>
>>>>
>>>> Wait a sec - so I do need to ifdown + ifup the device in order for
>>>> the secondary to be promoted and old IP address to be removed? That
>>>> might be my issue. I'm not doing it.
>>>>
>>>
>>> Yes, this is the issue, or sounds like it. But read below before doing
>>> anything.
>>
>>
>> OK.
>>
>>
>>>
>>>
>>> Basically dhcpcd will not do this if persistent address is enabled or
>>>>> carrier detection is disabled.
>>>>> Can you tell me how dhcpcd is started and what your configuration file
>>>>> is?
>>>>>
>>>>
>>>> I should have mention this in my previous email. I'm using dhcpcd on
>>>> Android JellyBean device. Android is using dhcpcd as DHCP client.
>>>> dhcpcd is started with:
>>>> dhcpcd -ABKLG -h <hostname>
>>>>
>>>> There is no dhcpcd.conf file on the OS filesystem.
>>>>
>>>
>>> Really? I'm suprised it works for the most part then.
>>> I would install the default dhcpcd.conf dhcpcd ships with into /etc
>>>
>>>
>> Yeah. That is what Android is using these days. I bet it is the case for
>> most if not all of the devices out there.
>> They use /etc/hdcpcd/ directory to place some scripts (for setprop and
>> such).
>> I once played with dhcpcd.conf in this directory in order to check
>> "reboot" option.
>> But for now, Android OS system seems to be working fine w/o any conf.
>>
>>
>>
>>>
>>>
>>>> Here is what I see in if-options.c:
>>>>
>>>> case 'A':
>>>> ifo->options &= ~DHCPCD_ARP;
>>>> /* IPv4LL requires ARP */
>>>> ifo->options &= ~DHCPCD_IPV4LL;
>>>> break;
>>>> case 'B':
>>>> ifo->options &= ~DHCPCD_DAEMONISE;
>>>> break;
>>>>
>>>> case 'K':
>>>> ifo->options &= ~DHCPCD_LINK;
>>>> break;
>>>> case 'L':
>>>> ifo->options &= ~DHCPCD_IPV4LL;
>>>> break;
>>>>
>>>> case 'G':
>>>> ifo->options &= ~DHCPCD_GATEWAY;
>>>> break;
>>>>
>>>
>>> Interesting.
>>> I would try this
>>> dhcpcd -h <hostname>
>>>
>>
>> OK. I killed the existing dhcpcd and started it:
>> shell@android:/ # /system/bin/dhcpcd -h <hostname> wlan0
>> dhcpcd[12419]: version 5.5.6 starting
>> dhcpcd[12419]: wlan0: sending IPv6 Router Solicitation
>> dhcpcd[12419]: wlan0: rebinding lease of 192.168.1.71
>> dhcpcd[12419]: wlan0: acknowledged 192.168.1.71 from 192.168.1.1
>> dhcpcd[12419]: wlan0: checking for 192.168.1.71
>> dhcpcd[12419]: wlan0: sending IPv6 Router Solicitation
>> dhcpcd[12419]: wlan0: leased 192.168.1.71 for 43200 seconds
>> usage: setprop <key> <value>
>> dhcpcd[12419]: forked to background, child pid 12454
>>
>>
>> Not sure what is that "usage:" line coming from.
>> shell@android:/ # ip addr show dev wlan0
>> 15: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
>> qlen 100
>> link/ether 00:0a:f5:d3:64:70 brd ff:ff:ff:ff:ff:ff
>> inet 192.168.1.47/24 brd 192.168.1.255 scope global wlan0
>> inet 192.168.1.71/24 brd 192.168.1.255 scope global secondary wlan0
>> inet6 fe80::20a:f5ff:fed3:6470/64 scope link
>> valid_lft forever preferred_lft forever
>>
>>
>> So I still see these 2 interface. 71 is the one coming from the current
>> DHCP.
>>
>>
>>> Do you know what starts dhcpcd? If it's just started as a system daemon
>>> and left to itself then it should be fine.
>>> Otherwise I would convert your 'droid to do this.
>>>
>>
>> dhcpcd should be a daemon.
>> In the android tree, there is a library called libnetutils. dhcp_utils.c
>> is part of this lib.
>>
>> Here is an example of the code:
>>
>> https://github.com/cgjones/android-system-core/blob/master/libnetutils/dhcp_utils.c
>>
>> So sounds like I should be ifdown and ifup the interface, ha?
>>
>> Thanks,
>> Kobi
>>
>>
>>> Thanks
>>>
>>> Roy
>>>
>>
>>
>
Archive administrator: postmaster@marples.name