Page MenuHomePhabricator

Duplicate Address Detection happens on interfaces other than eth0, too
In progress, NormalPublicBUG

Description

Task T903 adds a workaround for a problem where the DHCPv6 client can't bind to an address that hasn't finished DAD, yet. Unfortunately, the workaround waits for DAD to complete specifically on eth0 (the interface on which the problem was first noticed) rather than the interface that dhclient is actually attempting to start on:

vyatta-cfg-system/scripts/vyatta-dhcpv6-client.pl:

# Check for any non-tentative addresses (exit code 0 if any exist, 1 otherwise)
if (system("test -n \"\$(ip -6 -o addr show dev eth0 scope link -tentative)\"") != 0) {

This results in the problem not being fixed if dhclient is startoing on any interface other than eth0.

The fix is simple: Just replace eth0 with $ifname. I'll send a pull request momentarily.

Details

Difficulty level
Easy (less than an hour)
Version
1.2.0-rc9
Why the issue appeared?
Will be filled on close

Event Timeline

gadams changed the task status from Open to In progress.Nov 28 2018, 4:39 AM
gadams created this task.
gadams added a comment.EditedNov 29 2018, 11:41 PM

Did there turn out to a be problem with this fix? I definitely need it in my environment, where I run dhclient on eth3 or br0, and eth0 never gets an IPv6 address (link local or otherwise).

syncer triaged this task as Normal priority.Nov 30 2018, 4:33 PM
syncer added a project: VyOS 1.3 Equuleus.

@gadams I could have sworn I'd put $ifname in there, but the git history doesn't lie; apologies for missing that and thanks for catching.

gadams added a comment.Dec 3 2018, 6:34 AM

@aaliddell No worries! It was a really easy fix. :)

pasik added a subscriber: pasik.Mar 12 2019, 6:08 PM