main.go 977 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. /*
  3. * Sample DHCPv6 client to test on the local interface
  4. */
  5. import (
  6. "flag"
  7. "net"
  8. "github.com/coredhcp/coredhcp/logger"
  9. "github.com/insomniacslk/dhcp/dhcpv6"
  10. "github.com/insomniacslk/dhcp/iana"
  11. )
  12. var log = logger.GetLogger()
  13. func main() {
  14. flag.Parse()
  15. var macString string
  16. if len(flag.Args()) > 0 {
  17. macString = flag.Arg(0)
  18. } else {
  19. macString = "00:11:22:33:44:55"
  20. }
  21. c := dhcpv6.NewClient()
  22. c.LocalAddr = &net.UDPAddr{
  23. IP: net.ParseIP("::1"),
  24. Port: 546,
  25. }
  26. c.RemoteAddr = &net.UDPAddr{
  27. IP: net.ParseIP("::1"),
  28. Port: 547,
  29. }
  30. log.Printf("%+v", c)
  31. mac, err := net.ParseMAC(macString)
  32. if err != nil {
  33. log.Fatal(err)
  34. }
  35. duid := dhcpv6.Duid{
  36. Type: dhcpv6.DUID_LLT,
  37. HwType: iana.HwTypeEthernet,
  38. Time: dhcpv6.GetTime(),
  39. LinkLayerAddr: mac,
  40. }
  41. conv, err := c.Exchange("lo", dhcpv6.WithClientID(duid))
  42. for _, p := range conv {
  43. log.Print(p.Summary())
  44. }
  45. if err != nil {
  46. log.Fatal(err)
  47. }
  48. }