code: func createVlanLink(parentName string) error {
  	if strings.Contains(parentName, ".") {
  		parent, vidInt, err := parseVlan(parentName)
  		if err != nil {
  			return err
  		}
  		// VLAN identifier or VID is a 12-bit field specifying the VLAN to which the frame belongs
  		if vidInt > 4094 || vidInt < 1 {
  			return fmt.Errorf("vlan id must be between 1-4094, received: %d", vidInt)
  		}
  		// get the parent link to attach a vlan subinterface
  		parentLink, err := ns.NlHandle().LinkByName(parent)
  		if err != nil {
  			return fmt.Errorf("failed to find master interface %s on the Docker host: %v", parent, err)
  		}
  		vlanLink := &netlink.Vlan{
  			LinkAttrs: netlink.LinkAttrs{
  				Name:        parentName,
  				ParentIndex: parentLink.Attrs().Index,
  			},
  			VlanId: vidInt,
  		}
  		// create the subinterface
  		if err := ns.NlHandle().LinkAdd(vlanLink); err != nil {
  			return fmt.Errorf("failed to create %s vlan link: %v", vlanLink.Name, err)
  		}
  		// Bring the new netlink iface up
  		if err := ns.NlHandle().LinkSetUp(vlanLink); err != nil {
  			return fmt.Errorf("failed to enable %s the ipvlan parent link %v", vlanLink.Name, err)
  		}
  		logrus.Debugf("Added a vlan tagged netlink subinterface: %s with a vlan id: %d", parentName, vidInt)
  		return nil
  	}
  
  	return fmt.Errorf("invalid subinterface vlan name %s, example formatting is eth0.10", parentName)
  }
docs: // createVlanLink parses sub-interfaces and vlan id for creation