Age | Commit message (Collapse) | Author |
|
Align IPv4 address logic with IPv6 by caching per interface the assigned
IPv4 addresses. This allows to get rid of different ioctl calls in the
DHCPv4 logic to retrieve the IPv4 address and netmask in use by an
interface.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Some client implementations expect DHCPv6 addresses to be assigned for
every prefix present in a RA as reported in FS#524; if not done the
client implementations spam the DHCPv6 server with SOLICIT messages
trying to get an DHCPv6 address for every prefix.
When ra_managed is set to 1 and an ULA prefix is configured; the DHCPv6
server will only assign an ULA DHCPv6 addresses which possibly leads to
DNS issues.
Fix these problems by providing dhcpv6_assignall config option which
assigns all viable DHCPv6 addresses to a client by default.
This is a trade off as it means client implementations will be assigned
more IPv6 addresses and lose the ability to quickly renumber clients
which don't support reconfigure accept in case of wan prefix change
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Improve code readability by renaming managed into ra_managed and
define the according ra_managed flags.
This will help to better understand the ra_managed logic as defined
in the README file.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Retrieve IPv6 interface addresses when the interface gets created; this
allows to get rid of the IPv6 address dump logic in ndp.c.
Add IPv4 address support in odhcp_ipaddr struct.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Rework code to get rid of RELAYD_MAX_PREFIXES and RELAYD_MAX_ADDRS
by using dynamic IPv6 address array allocation.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Get rid of IFNAMSIZE usage for interface name and ifname variables
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Don't send an invalid hoplimit in RA message when
the interface is shutdown due to a invalid configured
ra_hoplimit.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Don't send an invalid retranstime in RA message when
the interface is shutdown due to a invalid configured
ra_retranstime.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Don't send an invalid reachabletime in RA message when
the interface is shutdown due to a invalid configured
ra_reachabletime.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Limit the maximum ra_mtu to 65535
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Limit the maximum ra_retranstime value to 60000 milliseconds as
described in RFC7048.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Allow to specify the router advertisement retrans time via the uci
parameter ra_retranstime. If retransmit time is not configured the
value is set to 0 in RA message meaning undefined.
|
|
Allow to specify the router advertisement reachable time via the uci
parameter ra_reachabletime. If reachable time is not configured the
value is set to 0 in RA message meaning undefined.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Allow to specify the router advertisement current hop limit via the uci
parameter ra_hoplimit. If hoplimit is not configured the hoplimit is
taken from the interface as before.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Allow to specify the router advertisement mtu via the uci parameter
ra_mtu. In case the config parameter is not set the MTU is taken from
the interface as before.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
In case maindhcp is set to disabled in global config one expect the DHCPv4
server not being started irrespective if the dhcpv4 interface config is set
to server.
Fix this by keeping maindhcp config apart from the legacy config parameter
as already documented in the README.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Make the code more logical by moving the IPv6 address dump logic into the
different protocol interface enable handlers so it's clear which protocols
require interface IPv6 address tracking.
At the same time restructure the IPv6 address dump logic so less IPv6 address
netlink dumps are created.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Add config option ra_useleasetime which allows the RA prefix lifetime
being set to the leasetime in case the valid and/or preferred prefix
lifetime is bigger than the configured leasetime.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Set dhcp leasetim to 43200 seconds for all interfaces independant
if dhcpv4 is enabled for an interface. Minimum allowed leasetime
is 60 seconds when parsing leastime configuration; this allows to
clean up the awkward leasetime checks on different places in the code
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Add support for uci parameters ra_mininterval and ra_lifetime as described
in RFC4861 paragraph 6.2.1.
Variable ra_mininterval allows to configure the minimum interval time
between unsolicited router advertisement messages; default value is
200 seconds. The minimum allowed value is 4 seconds while the maximum
value is limited to 0.75 of the maximum interval time.
The calculation of the maximum interval time between unsolicited
router advertisement messages has been reworked. The default value is 600
seconds as specified in RFC4861; if the maximum interval time exceeds
0.33 * the minimal valid lifetime of all IPv6 prefixes it will be limited
to 0.33 * the minimal valid lifetime of all IPv6 prefixes
Variable ra_lifetime allows to configure the Router Lifetime field
in the router advertisement messages; the value is either 0 or a value
between the maximum interval time and 9000 seconds. If the router lifetime
is smaller than the RA maximum interval it will be set equal to the RA
maximum interval time.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Interface defaults are whiped when clean interface is executed
resulting into loss of default behavior for the ndproxy_routing
and ra_management uci parameters
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
The odhcpd documentation currently implies that "option ignore 1" in a section
of type "dhcp" will disable any services on the referenced interface while the
code actually ignores the setting when initializing referenced interfaces.
This commonly leads to situations where users think that "option disabled"
will prevent any server activity on a given interface while in reality odhcpd
effectively acts as rogue DHCPv6 server in its default configuration.
To fully inhibit any activity, one has to specify both "option ignore 1" as
well as "option ra disabled", "option ndp disabled" and
"option dhcpv6 disabled" which is highly counter intuitive at best.
A previous commit (5f425ed Respect interface "ignore" settings as documented.)
attempted to address the problem by observing the value of i->ignore instead
of unconditionally enabling all protocols but broke the ability to use DHCPv6
relay mode while having DHCPv4 disabled.
This patch changes ...
- the enabling of services on an interface to use the value of the ignore
option as default choice instead of hardcoding "true"
- the options "ra", "ndp", "dhcpv4" and "dhcpv6" to take precedence over the
default "ignore" state to allow selectively enabling services on ignored
interfaces
- the README to clarify the fact that "ra", "ndp", "dhcpv4" and "dhcpv6" can
now override "option ignore"
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Acked-by: Karl Palsson <karlp@etactica.com>
Tested-by: Stijn Tintel <stijn@linux-ipv6.be>
Tested-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Create statefile dir if the specified dir does not yet exist
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
This reverts commit 5f425ed1e5f92397e27ec4f44820b6ef677b8134.
Both dnsmasq and odhcpd use the ignore option. This is fine for normal
operation, but it breaks DHCPv6 relay when dnsmasq is disabled on the
wan interface.
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
|
In case multiple dhcp uci sections are configured and one section contains
RA config while the other section does not; the RA interface config of the
first section will be overwritten by the second section.
Fix this by setting the default values for ra_management and ndp_proxy_routing
uci parameters when the interface is created and by removing the overwrite check
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
The "ignore" option is correctly loaded. Actually observe it as
documented.
Signed-off-by: Karl Palsson <karlp@etactica.com>
|
|
Add support for infinite leasetime value; this can be done by
specifying "infinite" as leasetime value which is similar to
dnsmasq infinite leasetime support.
Specifying "infinite" as leasetime is valid for both the host
and dhcp uci sections.
A DHCPv4/DHCPv6 assignment is now considered infinite if valid_unil
holds the value 0.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Patch by Daniel Dickinson
Signed-off-by: Steven Barth <steven@midlink.org>
|
|
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
|
|
|
|
|
|
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
|
|
|
|
|
|
|
|
RFC 2132 defines:
3.5. Router Option
The router option specifies a list of IP addresses for routers on the
client's subnet. Routers SHOULD be listed in order of preference.
The code for the router option is 3. The minimum length for the
router option is 4 octets, and the length MUST always be a multiple
of 4.
Code Len Address 1 Address 2
+-----+-----+-----+-----+-----+-----+-----+-----+--
| 3 | n | a1 | a2 | a3 | a4 | a1 | a2 | ...
+-----+-----+-----+-----+-----+-----+-----+-----+--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|