mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-13 22:47:30 +00:00
tstest/natlab/vnet: add DHCP tests, ignore DHCPv4 on v6-only networks
And clean up some of the test helpers in the process. Updates #13038 Change-Id: I3e2b5f7028a32d97af7f91941e59399a8e222b25 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:

committed by
Brad Fitzpatrick

parent
ffa1c93f59
commit
b1a5b40318
@@ -1286,6 +1286,10 @@ func (n *network) handleUDPPacketForRouter(ep EthernetPacket, udp *layers.UDP, t
|
||||
srcIP, dstIP := flow.src, flow.dst
|
||||
|
||||
if isDHCPRequest(packet) {
|
||||
if !n.v4 {
|
||||
n.logf("dropping DHCPv4 packet on v6-only network")
|
||||
return
|
||||
}
|
||||
res, err := n.s.createDHCPResponse(packet)
|
||||
if err != nil {
|
||||
n.logf("createDHCPResponse: %v", err)
|
||||
@@ -1587,6 +1591,7 @@ func (s *Server) createDHCPResponse(request gopacket.Packet) ([]byte, error) {
|
||||
return mkPacketErr(eth, ip, udp, response)
|
||||
}
|
||||
|
||||
// isDHCPRequest reports whether pkt is a DHCPv4 request.
|
||||
func isDHCPRequest(pkt gopacket.Packet) bool {
|
||||
v4, ok := pkt.Layer(layers.LayerTypeIPv4).(*layers.IPv4)
|
||||
if !ok || v4.Protocol != layers.IPProtocolUDP {
|
||||
|
Reference in New Issue
Block a user