2
0

helpers.go 723 B

1234567891011121314151617181920212223242526272829303132333435
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package linuxfw
  4. import (
  5. "encoding/hex"
  6. "fmt"
  7. "strings"
  8. "unicode"
  9. )
  10. func formatMaybePrintable(b []byte) string {
  11. // Remove a single trailing null, if any
  12. if len(b) > 0 && b[len(b)-1] == 0 {
  13. b = b[:len(b)-1]
  14. }
  15. nonprintable := strings.IndexFunc(string(b), func(r rune) bool {
  16. return r > unicode.MaxASCII || !unicode.IsPrint(r)
  17. })
  18. if nonprintable >= 0 {
  19. return "<hex>" + hex.EncodeToString(b)
  20. }
  21. return string(b)
  22. }
  23. func formatPortRange(r [2]uint16) string {
  24. if r == [2]uint16{0, 65535} {
  25. return fmt.Sprintf(`any`)
  26. } else if r[0] == r[1] {
  27. return fmt.Sprintf(`%d`, r[0])
  28. }
  29. return fmt.Sprintf(`%d-%d`, r[0], r[1])
  30. }