code: func NetworkLinkAdd(name string, linkType string) error {
  	if name == "" || linkType == "" {
  		return fmt.Errorf("Neither link name nor link type can be empty!")
  	}
  
  	s, err := getNetlinkSocket()
  	if err != nil {
  		return err
  	}
  	defer s.Close()
  
  	wb := newNetlinkRequest(syscall.RTM_NEWLINK, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
  
  	msg := newIfInfomsg(syscall.AF_UNSPEC)
  	wb.AddData(msg)
  
  	linkInfo := newRtAttr(syscall.IFLA_LINKINFO, nil)
  	newRtAttrChild(linkInfo, IFLA_INFO_KIND, nonZeroTerminated(linkType))
  	wb.AddData(linkInfo)
  
  	nameData := newRtAttr(syscall.IFLA_IFNAME, zeroTerminated(name))
  	wb.AddData(nameData)
  
  	if err := s.Send(wb); err != nil {
  		return err
  	}
  
  	return s.HandleAck(wb.Seq)
  }
docs: // Add a new network link of a specified type.
  // This is identical to running: ip link add $name type $linkType