diff options
author | Chris Koch <chrisko@google.com> | 2023-02-18 22:42:39 -0800 |
---|---|---|
committer | Chris K <c@chrisko.ch> | 2023-02-18 23:57:24 -0800 |
commit | f51b4d4530334a45ccb40368ada7930d269ef44a (patch) | |
tree | abde4e05be7e590d60aae7470c9a79364a4389af /dhcpv6/prettyprint_test.go | |
parent | b606c2152e1b91a556c42f126d5279348678682d (diff) |
dhcpv6: turn everythingmessage into a test
Signed-off-by: Chris Koch <chrisko@google.com>
Diffstat (limited to 'dhcpv6/prettyprint_test.go')
-rw-r--r-- | dhcpv6/prettyprint_test.go | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/dhcpv6/prettyprint_test.go b/dhcpv6/prettyprint_test.go new file mode 100644 index 0000000..7b839ef --- /dev/null +++ b/dhcpv6/prettyprint_test.go @@ -0,0 +1,96 @@ +package dhcpv6 + +import ( + "net" + "testing" + "time" + + "github.com/insomniacslk/dhcp/dhcpv4" + "github.com/insomniacslk/dhcp/iana" +) + +func TestPrint(t *testing.T) { + m4, _ := dhcpv4.NewDiscovery(net.HardwareAddr{0x1, 0x2, 0xde, 0xad, 0xbe, 0xef}) + + m, _ := NewSolicit(net.HardwareAddr{0x1, 0x2, 0xde, 0xad, 0xbe, 0xef}, WithRapidCommit) + + oneiana := m.Options.OneIANA() + iaaddr := &OptIAAddress{IPv6Addr: net.ParseIP("fe80::1")} + iaaddr.Options.Add(&OptStatusCode{StatusCode: iana.StatusSuccess, StatusMessage: "yes"}) + oneiana.Options.Add(iaaddr) + + oneiata := &OptIATA{} + oneiata.Options.Add(iaaddr) + + fourrd := &Opt4RD{} + fourrd.Add(&Opt4RDMapRule{ + Prefix4: net.IPNet{ + IP: net.IP{123, 123, 0, 0}, + Mask: net.CIDRMask(16, 32), + }, + Prefix6: net.IPNet{ + IP: net.ParseIP("fc80::"), + Mask: net.CIDRMask(64, 128), + }, + }) + fourrd.Add(&Opt4RDNonMapRule{ + HubAndSpoke: true, + }) + + iapd := &OptIAPD{ + IaId: [4]byte{0x1, 0x2, 0x3, 0x4}, + } + iaprefix := &OptIAPrefix{ + Prefix: &net.IPNet{ + IP: net.ParseIP("fc80::"), + Mask: net.CIDRMask(64, 128), + }, + } + iaprefix.Options.Add(&OptStatusCode{StatusCode: iana.StatusSuccess, StatusMessage: "yeah whatever"}) + iapd.Options.Add(iaprefix) + + vendorOpts := &OptVendorOpts{ + EnterpriseNumber: 123, + } + vendorOpts.VendorOpts.Add(&OptionGeneric{OptionCode: 400, OptionData: []byte("foobar")}) + + adv, _ := NewReplyFromMessage(m, + WithOption(OptClientArchType(iana.INTEL_X86PC, iana.EFI_X86_64)), + WithOption(OptBootFileURL("http://foobar")), + WithOption(OptBootFileParam("loglevel=10", "uroot.nohwrng")), + WithOption(OptClientLinkLayerAddress(iana.HWTypeEthernet, net.HardwareAddr{0x1, 0x2, 0xbe, 0xef, 0xde, 0xad})), + WithOption(fourrd), + WithOption(&OptDHCPv4Msg{m4}), + WithOption(&OptDHCP4oDHCP6Server{[]net.IP{net.ParseIP("fe81::1")}}), + WithOption(OptDNS(net.ParseIP("fe82::1"))), + WithOption(iapd), + WithOption(OptInformationRefreshTime(1*time.Second)), + WithOption(OptInterfaceID([]byte{0x1, 0x2})), + WithOption(&OptNetworkInterfaceID{ + Typ: NII_PXE_GEN_I, + Major: 1, + }), + WithOption(OptRelayPort(1026)), + WithOption(&OptRemoteID{EnterpriseNumber: 300, RemoteID: []byte{0xde, 0xad, 0xbe, 0xed}}), + WithOption(OptRequestedOption(OptionBootfileURL, OptionBootfileParam)), + WithOption(OptServerID(Duid{Type: DUID_LL, HwType: iana.HWTypeEthernet, LinkLayerAddr: net.HardwareAddr{0x1, 0x2, 0x3, 0x4, 0x5, 0x6}})), + WithOption(&OptUserClass{[][]byte{[]byte("foo"), []byte("bar")}}), + WithOption(oneiana), + WithOption(oneiata), + WithOption(&OptVendorClass{EnterpriseNumber: 300, Data: [][]byte{[]byte("foo"), []byte("bar")}}), + WithOption(vendorOpts), + ) + t.Log(adv.String()) + t.Log(adv.Summary()) + + relayfw := RelayMessage{ + MessageType: MessageTypeRelayForward, + } + relayfw.Options.Add(OptRelayMessage(adv)) + relayfw.Options.Add(&OptRemoteID{ + EnterpriseNumber: 0x123, + RemoteID: []byte{0x1, 0x2}, + }) + t.Log(relayfw.String()) + t.Log(relayfw.Summary()) +} |