summaryrefslogtreecommitdiffhomepage
path: root/dhcpv6/dhcpv6.go
AgeCommit message (Collapse)Author
2020-03-05v6: simplify GetTransactionIDChris Koch
Signed-off-by: Chris Koch <chrisko@google.com>
2020-03-05dhcpv6: intro Getters for OptionsChris Koch
Allow the Options type to have getters for each specific options, in order to avoid users having to cast options to their specific type. This commit introduces a getter for exactly one option: the ClientArchType. i.e. users can replace archTypes := msg.GetOneOption(OptionClientArchType).(*OptClientArchType) with archTypes := msg.Options.ArchTypes() Because a few message types and options embed options (normal message, relay message, IANA/IATA option) and each have a restricted set of options that can be used inside them, we'll introduce at least 3 or more Options subtypes: - MessageOptions - RelayOptions - IdentityOptions Perhaps others will join at a later time, such as VendorOptions or AddressOptions for the IAAddress options field. Signed-off-by: Chris Koch <chrisko@google.com>
2019-10-08dhcpv6: Add error checks to message parsersAnatole Denis
There were missing error checks in the Message and RelayMessage parsers, so that truncated headers would be incorrectly accepted as valid messages. For example the single byte "0" (0x30) would be accepted as a valid message, then reserialized to 0x30,0x00,0x00,0x00,0x00 Signed-off-by: Anatole Denis <natolumin@unverle.fr>
2019-10-08dhcpv6: Reject empty messagesAnatole Denis
The uio library doesn't report errors on a per-operation basis, but accumulates them so they can be checked after a batch of operations in a separate Error() function. Unfortunately this makes it easy to forget, thus parse incorrect messages go-fuzz found immediately that an empty message would be parsed without error, and reserialize to a different message (one with some bytes of zeros) Signed-off-by: Anatole Denis <natolumin@unverle.fr>
2019-04-04client6: new async DHCPv6 client like #250.Christopher Koch
- Race-condition-averse. - Supports multiple concurrent requests. - Tested. - Requires a fully compatible net.PacketConn. Signed-off-by: Christopher Koch <chrisko@google.com>
2019-03-11dhcpv6: standardize GetInnerMessageChristopher Koch
2019-03-11dhcpv6: remove setters and getters.Christopher Koch
- Make members directly accessible.
2019-03-11dhcpv6: add explicit unmarshaling functions.Christopher Koch
2019-03-11dhcpv6: rename stuttering types.Christopher Koch
dhcpv6.DHCPv6Message -> dhcpv6.Message dhcpv6.DHCPv6Relay -> dhcpv6.RelayMessage
2019-01-26dhcpv6: remove unnecessary Length functionChristopher Koch
2019-01-26dhcpv6: use uio buffer in DHCPv6 message parsingChristopher Koch
2019-01-26dhcpv6: introduce TransactionID typeChristopher Koch
2019-01-26dhcpv6: introduce options type.Christopher Koch
2018-08-13rebasePablo Mazzini
2018-08-12IsOptionRequested method of DHCPv6MessagePablo Mazzini
2018-08-10rename IsRequested to IsRequestedOptionPablo Mazzini
2018-07-30DHCPv6: Rename Option constants to CamelCaseSean Karlage
To appease linters
2018-07-29DHCPv6: Fix message type constantsSean Karlage
Renames DHCPv6 constants for message types to CamelCase
2018-07-14return error if index < -1Pablo Mazzini
2018-07-14add DecapsulateRelayIndexPablo Mazzini
2018-07-14extend DecapsulateRelayPablo Mazzini
2018-07-08add DelOption to OptIANA (#77)Pablo Mazzini
2018-05-02NewMessage now accepts modifiers (#54)insomniac
2018-05-02UpdateOption is now part of the DHCPv6 interface (#53)insomniac
2018-04-27fix EncapsulateRelay (#48)Pablo Mazzini
2018-04-20dhcpv6: added modifiers (#41)insomniac
dhcpv6: added modifiers Added support for packet modifiers, i.e. functions that can arbitrarily manipulate a DHCPv6 packet. These modifiers are used by NewMessage, NewSolicitForInterface, NewRequestForAdvertise, and can be used by other packet creation functions. A bunch of sample modifiers have been added under modifiers.go , too. With the introduction of modifiers I also removed some options that should not necessarily be in a standard DHCPv6 message.
2017-12-22Added SetOptions and AddOption to the DHCPv6 interface; Added ↵Andrea Barberio
EncapsulateRelay; refactored decapsulation
2017-12-10Added GetOption, GetOneOption and IsRelay methods to DHCPv6 interfaceAndrea Barberio
2017-12-10Added DHCPv6.Option() to interface, and implemented where missingAndrea Barberio
2017-12-08Added String() to DHCPv6 interface and implemented in DHCPv6RelayAndrea Barberio
2017-12-08Added DHCPv6.Length() and improved relay msg parsingAndrea Barberio
2017-12-07Refactored options into the dhcpv6 package to resolve circular imports. Sadly.Andrea Barberio
2017-12-07Relay message options instead of a raw byte sequenceAndrea Barberio
2017-12-06Added raw payload processing for DHCPv6RelayAndrea Barberio
2017-12-06Added support for DHCP relay and refactored into multiple filesAndrea Barberio
2017-12-06Added Relay message stub in decoderAndrea Barberio
2017-12-06DHCPv6 is now an interface; DHCPv6Message and DHCPv6RelayMessage are ↵Andrea Barberio
implementations
2017-12-05Initial commitAndrea Barberio