conn.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package udp
  2. import (
  3. "net/netip"
  4. "github.com/slackhq/nebula/config"
  5. )
  6. const MTU = 9001
  7. type EncReader func(
  8. addr netip.AddrPort,
  9. payload []byte,
  10. )
  11. // BatchPacket represents a single packet in a batch write operation
  12. type BatchPacket struct {
  13. Payload []byte
  14. Addr netip.AddrPort
  15. }
  16. type Conn interface {
  17. Rebind() error
  18. LocalAddr() (netip.AddrPort, error)
  19. ListenOut(r EncReader)
  20. WriteTo(b []byte, addr netip.AddrPort) error
  21. WriteBatch(pkts []BatchPacket) (int, error)
  22. ReloadConfig(c *config.C)
  23. SupportsMultipleReaders() bool
  24. SupportsGSO() bool
  25. SupportsGRO() bool
  26. Close() error
  27. }
  28. type NoopConn struct{}
  29. func (NoopConn) Rebind() error {
  30. return nil
  31. }
  32. func (NoopConn) LocalAddr() (netip.AddrPort, error) {
  33. return netip.AddrPort{}, nil
  34. }
  35. func (NoopConn) ListenOut(_ EncReader) {
  36. return
  37. }
  38. func (NoopConn) SupportsMultipleReaders() bool {
  39. return false
  40. }
  41. func (NoopConn) SupportsGSO() bool {
  42. return false
  43. }
  44. func (NoopConn) SupportsGRO() bool {
  45. return false
  46. }
  47. func (NoopConn) WriteTo(_ []byte, _ netip.AddrPort) error {
  48. return nil
  49. }
  50. func (NoopConn) WriteBatch(pkts []BatchPacket) (int, error) {
  51. return len(pkts), nil
  52. }
  53. func (NoopConn) ReloadConfig(_ *config.C) {
  54. return
  55. }
  56. func (NoopConn) Close() error {
  57. return nil
  58. }