"strings"
//proto "github.com/golang/protobuf/proto"
+ //jsonpb "github.com/golang/protobuf/jsonpb"
"github.com/containernetworking/cni/libcni"
)
return result, nil
}
-func cniCommon(conf string, netns string, ifName string, args string, capabilityArgsValue string) (*libcni.NetworkConfigList, *libcni.RuntimeConf, *libcni.CNIConfig, error) {
+func cniCommon(conf string, netns string, ifName string, args string, capabilityArgsValue *CNIcapArgs) (*libcni.NetworkConfigList, *libcni.RuntimeConf, *libcni.CNIConfig, error) {
var err error
return nil, nil, nil, err
}
- capabilityArgs := CNIcapArgs{}
- if err := json.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil {
- //if err := proto.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil {
+ // Example of how to walk a received protobuf message
+ portMappings := capabilityArgsValue.GetPortMappings()
+ log.Printf(" portMappings = %v", portMappings)
+ for _, portMap := range portMappings {
+ log.Printf(" portMap = %v", portMap)
+ }
+
+ var capabilityArgs map[string]interface{}
+ data, err := json.Marshal(capabilityArgsValue)
+ if err != nil {
+ return nil, nil, nil, err
+ }
+ if err := json.Unmarshal(data, &capabilityArgs); err != nil {
return nil, nil, nil, err
}
NetNS: netns,
IfName: ifName,
Args: cniArgs,
- //CapabilityArgs: capabilityArgs,
+ CapabilityArgs: capabilityArgs,
+ //CapabilityArgs: portMappings,
}
var f *os.File
return
}
- var capArgs string
+ // //var capArgs string
//var err error
- //capabilityArgs := api.CNIcapArgs{}
+ capabilityArgs := api.CNIcapArgs{}
capabilityArgsValue := os.Getenv(EnvCapabilityArgs)
if len(capabilityArgsValue) > 0 {
println("capabilityArgsValue: ", capabilityArgsValue)
- //if err = proto.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil {
- // exit(err)
- //}
+ if err = json.Unmarshal([]byte(capabilityArgsValue), &capabilityArgs); err != nil {
+ fmt.Fprintf(os.Stderr, " failed to unmarshal capabilitiesArgs, err = %v\n", err)
+ return
+ }
//data, err := proto.Marshal(&capabilityArgs)
//println("data: %v", data)
//if err != nil {
// exit(err)
//}
//capArgs = string(data)
- capArgs = capabilityArgsValue
+ // // capArgs = capabilityArgsValue
}
args, okArgs := os.LookupEnv(EnvCNIArgs)
switch os.Args[1] {
case CmdAdd:
- gRPCsendAddTcp(string(confBytes), netns, ifName, args, capArgs)
+ gRPCsendAddTcp(string(confBytes), netns, ifName, args, capabilityArgs)
os.Exit(0)
case CmdCheck:
- gRPCsendCheckTcp(string(confBytes), netns, ifName, args, capArgs)
+ gRPCsendCheckTcp(string(confBytes), netns, ifName, args, capabilityArgs)
os.Exit(0)
case CmdDel:
- gRPCsendDelTcp(string(confBytes), netns, ifName, args, capArgs)
+ gRPCsendDelTcp(string(confBytes), netns, ifName, args, capabilityArgs)
os.Exit(0)
}
}
-func gRPCsendAddTcp(conf string, netns string, ifName string, args string, capArgs string) error {
+func gRPCsendAddTcp(conf string, netns string, ifName string, args string, capArgs api.CNIcapArgs) error {
var conn *grpc.ClientConn
// Create the client TLS credentials
NetNS: netns,
IfName: ifName,
CniArgs: args,
- CapArgs: capArgs,
+ CapArgs: &capArgs,
}
resultAdd, err := cni.CNIadd(context.Background(), &cniAddMsg)
if err != nil {
return nil
}
-func gRPCsendCheckTcp(conf string, netns string, ifName string, args string, capArgs string) error {
+func gRPCsendCheckTcp(conf string, netns string, ifName string, args string, capArgs api.CNIcapArgs) error {
var conn *grpc.ClientConn
// Create the client TLS credentials
NetNS: netns,
IfName: ifName,
CniArgs: args,
- CapArgs: capArgs,
+ CapArgs: &capArgs,
}
resultCheck, err := cni.CNIcheck(context.Background(), &cniCheckMsg)
if err != nil {
return nil
}
-func gRPCsendDelTcp(conf string, netns string, ifName string, args string, capArgs string) error {
+func gRPCsendDelTcp(conf string, netns string, ifName string, args string, capArgs api.CNIcapArgs) error {
var conn *grpc.ClientConn
// Create the client TLS credentials
NetNS: netns,
IfName: ifName,
CniArgs: args,
- CapArgs: capArgs,
+ CapArgs: &capArgs,
}
resultDel, err := cni.CNIdel(context.Background(), &cniDelMsg)
if err != nil {
return nil
}
-func gRPCsendAddUnix(conf string, netns string, ifName string, args string, capArgs string) error {
+func gRPCsendAddUnix(conf string, netns string, ifName string, args string, capArgs api.CNIcapArgs) error {
var conn *grpc.ClientConn
NetNS: netns,
IfName: ifName,
CniArgs: args,
- CapArgs: capArgs,
+ CapArgs: &capArgs,
}
resultAdd, err := cni.CNIadd(context.Background(), &cniAddMsg)
if err != nil {
return nil
}
-func gRPCsendCheckUnix(conf string, netns string, ifName string, args string, capArgs string) error {
+func gRPCsendCheckUnix(conf string, netns string, ifName string, args string, capArgs api.CNIcapArgs) error {
var conn *grpc.ClientConn
NetNS: netns,
IfName: ifName,
CniArgs: args,
- CapArgs: capArgs,
+ CapArgs: &capArgs,
}
resultCheck, err := cni.CNIcheck(context.Background(), &cniCheckMsg)
if err != nil {
return nil
}
-func gRPCsendDelUnix(conf string, netns string, ifName string, args string, capArgs string) error {
+func gRPCsendDelUnix(conf string, netns string, ifName string, args string, capArgs api.CNIcapArgs) error {
var conn *grpc.ClientConn
NetNS: netns,
IfName: ifName,
CniArgs: args,
- CapArgs: capArgs,
+ CapArgs: &capArgs,
}
resultDel, err := cni.CNIdel(context.Background(), &cniDelMsg)
if err != nil {