MCPcopy Create free account
hub / github.com/tailscale/tailscale / trackOpenPreFilterIn

Method trackOpenPreFilterIn

wgengine/pendopen.go:67–98  ·  view source on GitHub ↗
(pp *packet.Parsed, t *tstun.Wrapper)

Source from the content-addressed store, hash-verified

65}
66
67func (e *userspaceEngine) trackOpenPreFilterIn(pp *packet.Parsed, t *tstun.Wrapper) (res filter.Response) {
68 res = filter.Accept // always
69
70 if pp.IPProto == ipproto.TSMP {
71 res = filter.DropSilently
72 rh, ok := pp.AsTailscaleRejectedHeader()
73 if !ok {
74 return
75 }
76 if rh.MaybeBroken {
77 e.noteFlowProblemFromPeer(tsRejectFlow(rh), rh.Reason)
78 } else if f := tsRejectFlow(rh); e.removeFlow(f) {
79 e.logf("open-conn-track: flow %v %v > %v rejected due to %v", rh.Proto, rh.Src, rh.Dst, rh.Reason)
80 }
81 return
82 }
83
84 if pp.IPVersion == 0 ||
85 pp.IPProto != ipproto.TCP ||
86 pp.TCPFlags&(packet.TCPSyn|packet.TCPRst) == 0 {
87 return
88 }
89
90 // Either a SYN or a RST came back. Remove it in either case.
91
92 f := flowtrack.MakeTuple(pp.IPProto, pp.Dst, pp.Src) // src/dst reversed
93 removed := e.removeFlow(f)
94 if removed && pp.TCPFlags&packet.TCPRst != 0 {
95 e.logf("open-conn-track: flow TCP %v got RST by peer", f)
96 }
97 return
98}
99
100var (
101 appleIPRange = netip.MustParsePrefix("17.0.0.0/8")

Callers

nothing calls this directly

Calls 6

removeFlowMethod · 0.95
MakeTupleFunction · 0.92
tsRejectFlowFunction · 0.85
logfMethod · 0.45

Tested by

no test coverage detected