ipcalc_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2018-present the CoreDHCP Authors. All rights reserved
  2. // This source code is licensed under the MIT license found in the
  3. // LICENSE file in the root directory of this source tree.
  4. package allocators
  5. import (
  6. "fmt"
  7. "net"
  8. )
  9. func ExampleOffset() {
  10. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 0))
  11. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 16))
  12. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 32))
  13. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 48))
  14. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 64))
  15. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 73))
  16. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 80))
  17. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 96))
  18. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 112))
  19. fmt.Println(Offset(net.ParseIP("2001:db8:0:aabb::"), net.ParseIP("2001:db8:ff::34"), 128))
  20. // Output:
  21. // 0 <nil>
  22. // 0 <nil>
  23. // 0 <nil>
  24. // 254 <nil>
  25. // 16667973 <nil>
  26. // 8534002176 <nil>
  27. // 1092352278528 <nil>
  28. // 71588398925611008 <nil>
  29. // 0 Operation overflows
  30. // 0 Operation overflows
  31. }
  32. func ExampleAddPrefixes() {
  33. fmt.Println(AddPrefixes(net.ParseIP("2001:db8::"), 0xff, 64))
  34. fmt.Println(AddPrefixes(net.ParseIP("2001:db8::"), 0x1, 128))
  35. fmt.Println(AddPrefixes(net.ParseIP("2001:db8::"), 0xff, 32))
  36. fmt.Println(AddPrefixes(net.ParseIP("2001:db8::"), 0x1, 16))
  37. fmt.Println(AddPrefixes(net.ParseIP("2001:db8::"), 0xff, 65))
  38. // Output:
  39. // 2001:db8:0:ff:: <nil>
  40. // 2001:db8::1 <nil>
  41. // 2001:eb7:: <nil>
  42. // 2002:db8:: <nil>
  43. // 2001:db8:0:7f:8000:: <nil>
  44. }