helpers.go 741 B

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