Skip to content

Commit

Permalink
Merge 0e85128 into 2c9d61c
Browse files Browse the repository at this point in the history
  • Loading branch information
Levovar committed Apr 27, 2020
2 parents 2c9d61c + 0e85128 commit d18e465
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pkg/danmep/danmep.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ func PostProcessInterface(ep *danmtypes.DanmEp, dnet *danmtypes.DanmNet) error {
}
isVfAttachedToDpdkDriver,_ := sriov_utils.HasDpdkDriver(ep.Spec.Iface.DeviceID)
if isVfAttachedToDpdkDriver {
err = createDummyInterface(ep)
err = createDummyInterface(ep, dnet)
if err != nil {
return errors.New("failed to create dummy kernel interface for " + ep.Spec.Iface.Name + " because:" + err.Error())
}
Expand Down
28 changes: 26 additions & 2 deletions pkg/danmep/ep.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,16 +261,40 @@ func deleteEp(ep *danmtypes.DanmEp) error {
return deleteContainerIface(ep)
}

func createDummyInterface(ep *danmtypes.DanmEp) error {
func createDummyInterface(ep *danmtypes.DanmEp, dnet *danmtypes.DanmNet) error {
origDummyName := ep.Spec.Iface.Name
if dnet.Spec.Options.Vlan != 0 {
origDummyName = ep.ObjectMeta.Name
}
dummy := &netlink.Dummy {
LinkAttrs: netlink.LinkAttrs {
Name: ep.Spec.Iface.Name,
Name: origDummyName,
Alias: ep.Spec.Iface.DeviceID,
},
}
err := netlink.LinkAdd(dummy)
if err != nil {
return errors.New("cannot create dummy interface for DPDK because:" + err.Error())
}
//To convey VLAN ID assigment we create a VLAN on top of the dummy, and tag it with the desired name instead of the underlying dummy
if dnet.Spec.Options.Vlan != 0 {
iface, err := netlink.LinkByName(origDummyName)
if err != nil {
return errors.New("cannot find freshly created dummy interface because:" + err.Error())
}
dummyVlan := &netlink.Vlan {
VlanId: dnet.Spec.Options.Vlan,
LinkAttrs: netlink.LinkAttrs {
ParentIndex: iface.Attrs().Index,
Name: ep.Spec.Iface.Name,
Alias: ep.Spec.Iface.DeviceID,
},
}
err = netlink.LinkAdd(dummyVlan)
if err != nil {
return errors.New("cannot create VLAN on dummy interface for DPDK because:" + err.Error())
}
}
iface, err := netlink.LinkByName(ep.Spec.Iface.Name)
if err != nil {
return errors.New("cannot find freshly created dummy interface because:" + err.Error())
Expand Down

0 comments on commit d18e465

Please sign in to comment.