in plugins/vpc-branch-pat-eni/config/netconfig.go [56:130]
func New(args *cniSkel.CmdArgs, isAdd bool) (*NetConfig, error) {
var config netConfigJSON
err := json.Unmarshal(args.StdinData, &config)
if err != nil {
return nil, fmt.Errorf("failed to parse network config: %v", err)
}
// Validate if all the required fields are present.
if config.TrunkName == "" && config.TrunkMACAddress == "" {
return nil, fmt.Errorf("missing required parameter trunkName or trunkMACAddress")
}
if config.BranchVlanID == "" {
return nil, fmt.Errorf("missing required parameter branchVlanID")
}
if isAdd && config.BranchMACAddress == "" {
return nil, fmt.Errorf("missing required parameter branchMACAddress")
}
// Populate NetConfig.
netConfig := NetConfig{
NetConf: config.NetConf,
TrunkName: config.TrunkName,
CleanupPATNetNS: config.CleanupPATNetNS,
}
// Parse the trunk MAC address.
if config.TrunkMACAddress != "" {
netConfig.TrunkMACAddress, err = net.ParseMAC(config.TrunkMACAddress)
if err != nil {
return nil, fmt.Errorf("invalid trunkMACAddress %s", config.TrunkMACAddress)
}
}
// Parse the branch VLAN ID.
netConfig.BranchVlanID, err = strconv.Atoi(config.BranchVlanID)
if err != nil {
return nil, fmt.Errorf("invalid branchVlanID %s", config.BranchVlanID)
}
// Parse the optional branch MAC address.
if config.BranchMACAddress != "" {
netConfig.BranchMACAddress, err = net.ParseMAC(config.BranchMACAddress)
if err != nil {
return nil, fmt.Errorf("invalid branchMACAddress %s", config.BranchMACAddress)
}
}
// Parse the optional branch IP address.
if config.BranchIPAddress != "" {
ipAddr, err := vpc.GetIPAddressFromString(config.BranchIPAddress)
netConfig.BranchIPAddress = *ipAddr
if err != nil {
return nil, fmt.Errorf("invalid branchIPAddress %s", config.BranchIPAddress)
}
}
// Parse the optional TAP interface UID and GID.
if config.Uid != "" {
netConfig.Uid, err = strconv.Atoi(config.Uid)
if err != nil {
return nil, fmt.Errorf("invalid UID %s", config.Uid)
}
}
if config.Gid != "" {
netConfig.Gid, err = strconv.Atoi(config.Gid)
if err != nil {
return nil, fmt.Errorf("invalid GID %s", config.Gid)
}
}
// Validation complete. Return the parsed NetConfig object.
log.Debugf("Created NetConfig: %+v", config)
return &netConfig, nil
}