summaryrefslogtreecommitdiffhomepage
path: root/src/config.c
AgeCommit message (Collapse)Author
2018-12-31config: check for invalid DNS addressesHans Dedecker
Don't accept 0.0.0.0 and :: as DNS addresses. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2018-11-23config: correctly break string for prefix filterHamster Tian
This if statement does the following: 1. Copy the value of "config prefix_filter" 2. Break the string at "/" 3. Save the number after / as prefix length 4. Convert the address before / into in6_addr However the extraneous "=" broke the second step and inet_pton failed with addresses with mask. This commit removes the = thus fixes the feature. Signed-off-by: Tian Hao <haotia@gmail.com>
2018-09-05odhcpd: detect broken hostnamesHans Dedecker
Check hostnames contain valid characters as defined in RFC 952 and RFC 1123. Invalid hostnames in uci configured host entries will result into a refusal to create the static lease. In case a client received hostname contains an invalid character no <hostname> <IP address> entry will be added to the lease file. In such case the leaseinfo description in the lease file will still contain the hostname but preceded by the string broken\x20 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2018-09-03config: fix odhcpd_attrs array sizeHans Dedecker
Use ODHCPD_ATTR_MAX as array size of odhcpd_attrs Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2018-06-22config: fix wrong assignmentHans Dedecker
Detected by Coverity in CID1430899 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-12-17odhcpd: Replace strerror(errno) with %m formatRosen Penev
Saves a few bytes. Signed-off-by: Rosen Penev <rosenp@gmail.com>
2017-12-08Support muliple RAs on single interfacePierre Pfister
IETF is moving toward implementing IPv6 multihoming by sending multiple RAs on a single interface: - draft-ietf-intarea-provisioning-domains-00 - draft-ietf-rtgwg-enterprise-pa-multihoming-02 odhcpd supports configuration of multiple software interfaces on the same physical interface, which already advertises multiple RAs, but had two issues: - Each RA includes all the prefixes available on the interface. - Replies to sollicits with a single RA. This patch introduces the prefix_filter configuration parameter which allows filtering prefixes that are sent in a given RA, and fixes the sollicit code in order to reply with all the RAs that are configured on a given interface. Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2017-11-09dhcpv4: make DHCPv4 support compiletime configurableHans Dedecker
Make DHCPv4 support compile time configurable; avoids DHCPv4 functionality overlap with other packages. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-11-09treewide: rework handling of netlink eventsHans Dedecker
Rework the handling of netlink events by letting the different modules ndp, ra, dhcpv6 and dhcpv4 install netevent handlers. The installed netevent handlers are called by the netlink logic passing an event indication together with event data. Each netevent handler implements its own event logic; this makes the code more modular and less complex by moving all netlink code to netlink.c While at it rename ia_addr and ia_addr_len into addr6 and addr6_len respectively Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-10-16treewide: add netlink fileHans Dedecker
First step in moving netlink code to netlink.c by moving netlink code from odhcpd.c to netlink.c Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-10-13treewide: align function namingHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-09-13dhcpv4: force renew nonce authentication supportHans Dedecker
Support force renew nonce authentication support in the DHCPv4 server as described in RFC3203 and RFC6704. The interface uci arameter dhcpv4_forcereconf allows to supports DHCPv4 clients which support force renew without authentication. While at it align network byte order logic for simplicity. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-09-13ndp: detect ifindex changes via interface netlink eventsHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-09-06treewide: replace RELAYD prefix naming in macrosHans Dedecker
Remove the unfortunate RELAYD naming in the different macros Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-08-07treewide: rework IPv4 address logicHans Dedecker
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>
2017-08-03dhcpv6: assign all viable DHCPv6 addresses by default (FS#402, FS#524)Hans Dedecker
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>
2017-08-02treewide: reflect managed mode is related to RAHans Dedecker
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>
2017-07-03treewide: rework logic to retrieve IPv6 interface addressesHans Dedecker
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>
2017-06-29treewide: rework code to get rid of fixed IPv6 address arraysHans Dedecker
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>
2017-06-27config: rework code to get rid of IFNAMSIZ usageHans Dedecker
Get rid of IFNAMSIZE usage for interface name and ifname variables Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-05-15config: fix invalid hoplimit in RA messageHans Dedecker
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>
2017-05-15config: fix invalid retranstime in RA messageHans Dedecker
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>
2017-05-15config: fix invalid reachabletime in RA messageHans Dedecker
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>
2017-05-15config: limit ra_mtu to 65535Hans Dedecker
Limit the maximum ra_mtu to 65535 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-05-15config: limit ra_retranstime to 60000Hans Dedecker
Limit the maximum ra_retranstime value to 60000 milliseconds as described in RFC7048. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-05-12config: make RA retransTime configurable via uciHans Dedecker
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.
2017-05-11config: make RA reachableTime configurable via uciHans Dedecker
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>
2017-05-11config: make RA curHopLimit configurable via uciHans Dedecker
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>
2017-05-11config: make RA mtu configurable via UCIHans Dedecker
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>
2017-05-11config: fix dhcpv4 server being startedHans Dedecker
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>
2017-03-29rework IPv6 address dump logicHans Dedecker
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>
2017-02-20router: allow RA prefix lifetime being set to leasetime value (FS#397)Hans Dedecker
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>
2017-02-19treewide: simplify dhcp leasetime checkingHans Dedecker
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>
2017-02-16router: support ra_mininterval and ra_lifetime uci parameters (FS#397)Hans Dedecker
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>
2017-02-14config: make loglevel configurable via uci (FS#481)Hans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2017-02-09config: restore interface defaults when cleaning interfaceHans Dedecker
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>
2017-01-05config: respect ignore uci optionJo-Philipp Wich
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>
2016-12-29config: use free_lease to delete a leaseHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2016-12-29config: coding style fixesHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2016-12-29config: Create statefile dirHans Dedecker
Create statefile dir if the specified dir does not yet exist Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2016-12-27Revert "Respect interface "ignore" settings as documented."Stijn Tintel
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>
2016-12-12config: Fix RA interface config being overwrittenHans Dedecker
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>
2016-11-21Respect interface "ignore" settings as documented.Karl Palsson
The "ignore" option is correctly loaded. Actually observe it as documented. Signed-off-by: Karl Palsson <karlp@etactica.com>
2016-11-21config: Support infinite as DHCP pool leasetime valueHans Dedecker
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>
2016-05-19Add per-host leasetime supportSteven Barth
Patch by Daniel Dickinson Signed-off-by: Steven Barth <steven@midlink.org>
2015-12-15config: blobmsg_check_attr expects bool type as last argumentHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2015-11-27config: Prioritize ifname resolving via ubus over ifname/networkid attributesHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2015-11-27config: Close interface when ifindex cannot be resolvedHans Dedecker
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2015-07-14Remove unsolicited unicast RAs, adjust intervalsSteven Barth
2015-04-21config: fix typo in reload_cbSteven Barth