func sendStopMarker(src, dst string) {
	l, _ := net.ResolveUDPAddr("udp", src+":2222")
	r, _ := net.ResolveUDPAddr("udp", dst+":2222")
	conn, err := net.DialUDP("udp", l, r)
	if err != nil {
		log.Printf("fail to send stopmarker: %s", err)
		return
	}
	defer conn.Close()
	conn.Write(stopMarker)
}
// Close of Windows and Linux tun/tap device do not interrupt blocking Read.
// sendStopMarker is used to issue a specific packet to notify threads blocking
// on Read.
Close of Windows and Linux tun/tap device do not interrupt blocking Read.
sendStopMarker is used to issue a specific packet to notify threads blocking
on Read.
// Close of Windows and Linux tun / tap device do not interrupt blocking Read . // sendStopMarker is used to issue a specific packet to notify threads blocking // on Read .
func sendStopMarker(src, dst string) {
	l, _ := net.ResolveUDPAddr("udp", src+":2222")
	r, _ := net.ResolveUDPAddr("udp", dst+":2222")
	conn, err := net.DialUDP("udp", l, r)
	if err != nil {
		log.Printf("fail to send stopmarker: %s", err)
		return
	}
	defer conn.Close()
	conn.Write(stopMarker)
}
func sendStopMarker ( src , dst string ) { l , _ := net . ResolveUDPAddr ( " " , src + " " ) r , _ := net . ResolveUDPAddr ( " " , dst + " " ) conn , err := net . DialUDP ( " " , l , r ) if err != nil { log . Printf ( " " , err ) return } defer conn . Close ( ) conn . Write ( stopMarker ) }
Close of Windows and Linux tun/tap device do not interrupt blocking Read.
Close of Windows and Linux tun / tap device do not interrupt blocking Read .