Trick for being extra sensitive to route changes
This commit is contained in:
		
							parent
							
								
									bbf320c477
								
							
						
					
					
						commit
						4365b4583f
					
				@ -58,11 +58,12 @@ func (endpoint *NativeEndpoint) dst6() *unix.SockaddrInet6 {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type NativeBind struct {
 | 
			
		||||
	sock4         int
 | 
			
		||||
	sock6         int
 | 
			
		||||
	netlinkSock   int
 | 
			
		||||
	netlinkCancel *rwcancel.RWCancel
 | 
			
		||||
	lastMark      uint32
 | 
			
		||||
	sock4                        int
 | 
			
		||||
	sock6                        int
 | 
			
		||||
	netlinkSock                  int
 | 
			
		||||
	netlinkCancel                *rwcancel.RWCancel
 | 
			
		||||
	lastMark                     uint32
 | 
			
		||||
	clearSourceOnAllRouteChanges bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ Endpoint = (*NativeEndpoint)(nil)
 | 
			
		||||
@ -582,6 +583,16 @@ func (bind *NativeBind) routineRouteListener(device *Device) {
 | 
			
		||||
 | 
			
		||||
			switch hdr.Type {
 | 
			
		||||
			case unix.RTM_NEWROUTE, unix.RTM_DELROUTE:
 | 
			
		||||
				if bind.clearSourceOnAllRouteChanges {
 | 
			
		||||
					for _, peer := range device.peers.keyMap {
 | 
			
		||||
						peer.mutex.Lock()
 | 
			
		||||
						if peer.endpoint != nil && peer.endpoint.(*NativeEndpoint) != nil {
 | 
			
		||||
							peer.endpoint.(*NativeEndpoint).ClearSrc()
 | 
			
		||||
						}
 | 
			
		||||
						peer.mutex.Unlock()
 | 
			
		||||
					}
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
				if hdr.Seq <= MaxPeers && hdr.Seq > 0 {
 | 
			
		||||
					if uint(len(remain)) < uint(hdr.Len) {
 | 
			
		||||
						break
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user