psock_snd.sh 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. #
  4. # Run a series of packet socket send regression tests
  5. set -e
  6. readonly mtu=1500
  7. readonly iphlen=20
  8. readonly udphlen=8
  9. readonly vnet_hlen=10
  10. readonly eth_hlen=14
  11. readonly mss="$((${mtu} - ${iphlen} - ${udphlen}))"
  12. readonly mss_exceeds="$((${mss} + 1))"
  13. readonly max_mtu=65535
  14. readonly max_mss="$((${max_mtu} - ${iphlen} - ${udphlen}))"
  15. readonly max_mss_exceeds="$((${max_mss} + 1))"
  16. # functional checks (not a full cross-product)
  17. echo "dgram"
  18. ./in_netns.sh ./psock_snd -d
  19. echo "dgram bind"
  20. ./in_netns.sh ./psock_snd -d -b
  21. echo "raw"
  22. ./in_netns.sh ./psock_snd
  23. echo "raw bind"
  24. ./in_netns.sh ./psock_snd -b
  25. echo "raw qdisc bypass"
  26. ./in_netns.sh ./psock_snd -q
  27. echo "raw vlan"
  28. ./in_netns.sh ./psock_snd -V
  29. echo "raw vnet hdr"
  30. ./in_netns.sh ./psock_snd -v
  31. echo "raw csum_off"
  32. ./in_netns.sh ./psock_snd -v -c
  33. echo "raw csum_off with bad offset (expected to fail)"
  34. (! ./in_netns.sh ./psock_snd -v -c -C)
  35. # bounds check: send {max, max + 1, min, min - 1} lengths
  36. echo "raw min size"
  37. ./in_netns.sh ./psock_snd -l 0
  38. echo "raw mtu size"
  39. ./in_netns.sh ./psock_snd -l "${mss}"
  40. echo "raw mtu size + 1 (expected to fail)"
  41. (! ./in_netns.sh ./psock_snd -l "${mss_exceeds}")
  42. # fails due to ARPHRD_ETHER check in packet_extra_vlan_len_allowed
  43. #
  44. # echo "raw vlan mtu size"
  45. # ./in_netns.sh ./psock_snd -V -l "${mss}"
  46. echo "raw vlan mtu size + 1 (expected to fail)"
  47. (! ./in_netns.sh ./psock_snd -V -l "${mss_exceeds}")
  48. echo "dgram mtu size"
  49. ./in_netns.sh ./psock_snd -d -l "${mss}"
  50. echo "dgram mtu size + 1 (expected to fail)"
  51. (! ./in_netns.sh ./psock_snd -d -l "${mss_exceeds}")
  52. echo "raw truncate hlen (expected to fail: does not arrive)"
  53. (! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen}))")
  54. echo "raw truncate hlen - 1 (expected to fail: EINVAL)"
  55. (! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen} - 1))")
  56. # gso checks: implies -l, because with gso len must exceed gso_size
  57. echo "raw gso min size"
  58. ./in_netns.sh ./psock_snd -v -c -g -l "${mss_exceeds}"
  59. echo "raw gso max size"
  60. ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss}"
  61. echo "raw gso max size + 1 (expected to fail)"
  62. (! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}")
  63. echo "OK. All tests passed"