mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 11:15:07 +03:00 
			
		
		
		
	Don't process ICMPv6 messages when in TUN mode
This commit is contained in:
		
							parent
							
								
									cc2b6f093c
								
							
						
					
					
						commit
						4e03bdb054
					
				
					 2 changed files with 12 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -156,6 +156,9 @@ func (i *icmpv6) parse_packet_tun(datain []byte, datamac *[]byte) ([]byte, error
 | 
			
		|||
	// Check for a supported message type
 | 
			
		||||
	switch icmpv6Header.Type {
 | 
			
		||||
	case ipv6.ICMPTypeNeighborSolicitation:
 | 
			
		||||
		if !i.tun.iface.IsTAP() {
 | 
			
		||||
			return nil, errors.New("Ignoring Neighbor Solicitation in TUN mode")
 | 
			
		||||
		}
 | 
			
		||||
		response, err := i.handle_ndp(datain[ipv6.HeaderLen:])
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			// Create our ICMPv6 response
 | 
			
		||||
| 
						 | 
				
			
			@ -173,6 +176,9 @@ func (i *icmpv6) parse_packet_tun(datain []byte, datamac *[]byte) ([]byte, error
 | 
			
		|||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	case ipv6.ICMPTypeNeighborAdvertisement:
 | 
			
		||||
		if !i.tun.iface.IsTAP() {
 | 
			
		||||
			return nil, errors.New("Ignoring Neighbor Advertisement in TUN mode")
 | 
			
		||||
		}
 | 
			
		||||
		if datamac != nil {
 | 
			
		||||
			var addr address.Address
 | 
			
		||||
			var target address.Address
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -214,11 +214,12 @@ func (tun *tunAdapter) read() error {
 | 
			
		|||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if buf[o+6] == 58 {
 | 
			
		||||
			// Found an ICMPv6 packet
 | 
			
		||||
			b := make([]byte, n)
 | 
			
		||||
			copy(b, buf)
 | 
			
		||||
			// tun.icmpv6.recv <- b
 | 
			
		||||
			go tun.icmpv6.parse_packet(b)
 | 
			
		||||
			if tun.iface.IsTAP() {
 | 
			
		||||
				// Found an ICMPv6 packet
 | 
			
		||||
				b := make([]byte, n)
 | 
			
		||||
				copy(b, buf)
 | 
			
		||||
				go tun.icmpv6.parse_packet(b)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		packet := append(util.GetBytes(), buf[o:n]...)
 | 
			
		||||
		tun.send <- packet
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue