當前位置: 首頁>>代碼示例>>Golang>>正文


Golang ControlMessage.Dst方法代碼示例

本文整理匯總了Golang中golang.org/x/net/ipv6.ControlMessage.Dst方法的典型用法代碼示例。如果您正苦於以下問題:Golang ControlMessage.Dst方法的具體用法?Golang ControlMessage.Dst怎麽用?Golang ControlMessage.Dst使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在golang.org/x/net/ipv6.ControlMessage的用法示例。


在下文中一共展示了ControlMessage.Dst方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: sendRA

func (s *Server) sendRA(src net.Addr) {
	var srcIP net.IP
	var ipAddr net.Addr

	iface, err := net.InterfaceByName("tap" + s.name)
	if err != nil {
		return
	}
	addrs, err := iface.Addrs()
	if err != nil {
		l.Info("can't get addresses from " + iface.Name + " " + err.Error())
		return
	}
	for _, addr := range addrs {
		ip, _, err := net.ParseCIDR(addr.String())
		if err != nil {
			l.Info(err.Error())
			continue
		}
		if ip.To4() == nil && strings.HasPrefix(addr.String(), "fe80") {
			srcIP = ip
			if src == nil {
				ipAddr = net.Addr(&net.IPAddr{IP: net.IPv6linklocalallnodes, Zone: "tap" + s.name})
			} else {
				ipAddr = src
			}
			break
		}
	}

	if ipAddr == nil || srcIP == nil {
		l.Info(fmt.Sprintf("ipv6 add missing for tap %s %s", s.name, srcIP))
		return
	}
	res, err := s.ServeICMPv6(srcIP, &ICMPv6{Type: uint8(ipv6.ICMPTypeRouterSolicitation)})
	if err != nil {
		l.Info(err.Error())
		return
	}

	for _, msg := range res {
		buf := make([]byte, msg.Len())
		buf, err = msg.Marshal()
		if err != nil {
			l.Info(fmt.Sprintf("%s err %s", s.name, err.Error()))
			continue
		}

		wcm := ipv6.ControlMessage{HopLimit: 255}
		wcm.Dst = net.IPv6linklocalallnodes
		wcm.IfIndex = iface.Index
		if _, err = s.ipv6conn.WriteTo(buf, &wcm, ipAddr); err != nil {
			l.Info(fmt.Sprintf("%s err %s", s.name, err.Error()))
			continue
		}
	}
}
開發者ID:vtolstov,項目名稱:cloudmeta,代碼行數:57,代碼來源:icmp.go


注:本文中的golang.org/x/net/ipv6.ControlMessage.Dst方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。