summaryrefslogtreecommitdiffhomepage
path: root/netboot
AgeCommit message (Collapse)Author
2022-11-10Return error from RequestNetbootv4Avi B
The current behavior of `RequestNetbootv4` is potentially dangerous because when it reaches the max number of retries, it returns `conversation, nil` (line 91) back to the caller, even if `client.Exchange()` (line 77) returned an `err`. This leads to a situation where the caller will see `err == nil` but incorrect data returned via the other parameter. This changes the behavior to match the behavior of `RequestNetbootv6`. If this change isn't allowed because it's not backwards compatible then we should at least consider returning `nil, nil` instead of `conversation, nil` on the final retry. Signed-off-by: Avi <avibrender@gmail.com>
2021-08-17Add NTPServers to NetConfDeomid "rojer" Ryabkov
Signed-off-by: Deomid "rojer" Ryabkov <rojer9@fb.com>
2021-08-09netboot: DNS not mandatoryPablo Mazzini
2021-03-15Switch to GitHub ActionsAndrea Barberio
TravisCI not supported anymore. Signed-off-by: Andrea Barberio <insomniac@slackware.it>
2020-11-12netboot: use latest rtnl apiPablo Mazzini
Signed-off-by: Pablo Mazzini <pmazzini@gmail.com>
2020-07-10netconf: apply v6 addresses as /128Chris Koch
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684009 "Note that the dhcpv6 protocol doesn't have an option for a netmask. So it is always /128 and routing is left to icmpv6 router advertisements." RFC 5942 is a good read here as well: An address could be acquired through the DHCPv6 identity association for non- temporary addresses (IA_NA) option from [RFC3315] (which does not include a prefix length), or through manual configuration (if no prefix length is specified). The host incorrectly assumes an invented prefix is on-link. This invented prefix typically is a /64 that was written by the developer of the operating system network module API to any IPv6 application as a "default" prefix length when a length isn't specified. As DHCP developers, we *HAVE* to assume that no prefix is on-link. The correct way to do that is to specify the netmask as /128. The kernel will RA/RS their way around to figure out what prefixes are indeed on-link. Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-09netconf: use new IANA and IAAddress gettersChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-05v6: DomainSearchList getterChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-05v6: add BootFileParam getterChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-05v6: add BootFileURL getterChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-05v6: add DNS getter (and rename DNSRecursiveNameServer to DNS)Chris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-05v6: add IANA GetterChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-01-02Fix "conn" leaking, which eventually leads to thread exhaustion on machines ↵Leandro Martelli
with many NICs Signed-off-by: Leandro Martelli <martelli@epix.com.br>
2020-01-02v6: use time.Duration for duration fieldsChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2019-12-12[netboot] Add support of BootfileParam to "netboot"Dmitrii Okunev
Signed-off-by: Dmitrii Okunev <xaionaro@fb.com>
2019-09-25dhcpv6: simplify boot file URLChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2019-06-20Fix TravisCI build (#297)insomniac
2019-04-30[netboot] Return error when there is oneAndrea Barberio
The current implementation has a bug, so that it always returns `nil`, even when an error happened. This PR fixes it. Signed-off-by: Andrea Barberio <insomniac@slackware.it>
2019-04-29[netboot] use rtnl packageAndrea Barberio
After adding the higher-level [rtnl package](https://github.com/jsimonetti/rtnetlink/pull/44) let's switch to it. Pending https://github.com/jsimonetti/rtnetlink/pull/50 Signed-off-by: Andrea Barberio <insomniac@slackware.it>
2019-04-24[dhcpv6] Solicit messages derive default IAID from MAC addressAndrea Barberio
IAID must be set by the client. This patch generates the IAID from the MAC address of the interface. To do so, a new WithIAID modifier is added, the interface of NewSolicitWithCID now requires a hwaddr parameter, and NewAdvertiseFromSolicit copies the IA_NA option from the solicit if present. Signed-off-by: Andrea Barberio <insomniac@slackware.it>
2019-04-15Replace vishvananda/netlink with jsimonetti/rtnetlink (#271)insomniac
Fixes #257 And saves ~100kb. Signed-off-by: Andrea Barberio <insomniac@slackware.it>
2019-03-11dhcpv6: remove setters and getters.Christopher Koch
- Make members directly accessible.
2019-03-11dhcpv6: rename stuttering types.Christopher Koch
dhcpv6.DHCPv6Message -> dhcpv6.Message dhcpv6.DHCPv6Relay -> dhcpv6.RelayMessage
2019-03-07Allow Unknown OperState of the link interface (#254)Łukasz Siudut
* Allow Unknowo OperState of the link interface We hig a bug when Netconf library was failing to bring interface up despite the fact that it was actually up. It turned out that it's oper state was not set to UP, what is expected by the library. According to kernel documentation it is ok proceed if interface state is Up or Unknown: ``` Interface is in RFC2863 operational state UP or UNKNOWN. This is for backward compatibility, routing daemons, dhcp clients can use this flag to determine whether they should use the interface. ``` Also, resaon why operational state may remain Unknown: ``` IF_OPER_UNKNOWN (0): Interface is in unknown state, neither driver nor userspace has set operational state. Interface must be considered for user data as setting operational state has not been implemented in every driver. ``` I modified our code to try DHCP transaction even if `IfUp` failed, but the OperState was equal to Unknown - it worked perfectly. * Skip rt7 test also with go 1.10 and 1.11 As per request from @pmazzini.
2019-01-28dhcpv4: moved client into dhcpv4/client4Andrea Barberio
2019-01-28dhcpv6: moved client into dhcpv6/client6Andrea Barberio
2019-01-24dhcpv4: getters instead of gettersChristopher Koch
From: r := GetRouter(d.Options) To: r := d.Router()
2019-01-24dhcpv4: nicer API for option parsing.Christopher Koch
From: r := d.GetOneOption(OptionRouter).(*OptRouter).Routers d.UpdateOption(&OptRouter{Routers: []net.IP{net.IP{192, 168, 0, 1}}}) To: r := GetRouter(d.Options) d.UpdateOption(OptRouter(net.IP{192, 168, 0, 1}, ...))
2019-01-19dhcpv4: build more packets with modifiersChristopher Koch
Also drop unnecessary return value of Modifier.
2019-01-14iana: rename HwTypeType to HWType, add package comment.Christopher Koch
2019-01-09dhcpv4: export packet members; remove setters and getters.Christopher Koch
2018-12-08Added netconf v4 tests and required modifiersAndrea Barberio
2018-12-08Added netconf basic testing and required modifiersAndrea Barberio
2018-11-27simplify client interface (#181)Pablo Mazzini
2018-11-21rfc1035label: using a structure to hold original dataAndrea Barberio
2018-11-20netboot: delay in IfUp to avoid hammering the CPUAndrea Barberio
2018-11-19dhcpv4: run on unconfigured interfaces (#198)insomniac
2018-11-13netboot: domain search list not mandatoryAndrea Barberio
2018-11-07Add netboot/netconf support for DHCPv4 (#185)Marco Guerri
2018-08-15Fixing duplicate WithNetboot modifier in netboot packageAndrea Barberio
2018-07-30DHCPv6: Rename Option constants to CamelCaseSean Karlage
To appease linters
2018-07-29Fix message type usage in netboot packageSean Karlage
2018-07-16Netboot: don't fail if no netboot url is returnedAndrea Barberio
2018-05-25OptBootFileURL fields are now public (#68)insomniac
2018-05-21Tests for DUID, OptIAAddress and several fixes (#66)insomniac
2018-05-20Unbreak build after changing OptIANA interface (#65)insomniac
2018-05-12OptDomainSearchList: made fields public and added unit tests (#64)insomniac
2018-05-10OptDNSRecursiveNameServer gets public fields and tests, removes setter and ↵insomniac
getter (#62)
2018-04-22Added netboot package (#45)insomniac
Added netboot package