@@ -20,6 +20,7 @@ import (
2020 "encoding/binary"
2121 "fmt"
2222 "net"
23+ "strings"
2324 "sync"
2425 "time"
2526
@@ -720,28 +721,42 @@ func (l *LocalBridge) BridgeReset() {
720721}
721722
722723func (l * LocalBridge ) AddLocalEndpoint (endpoint * Endpoint ) error {
724+ // skip ovs patch port
725+ if strings .HasSuffix (endpoint .InterfaceName , LocalToPolicySuffix ) {
726+ return nil
727+ }
728+
729+ // skip cni gateway
730+ if l .datapathManager .AgentInfo .LocalGwName == endpoint .InterfaceName {
731+ return nil
732+ }
733+
723734 // Table 0, from local endpoint
724735 var vlanIDMask uint16 = 0x1fff
736+ vlanInputTableFromLocalFlow , _ := l .vlanInputTable .NewFlow (ofctrl.FlowMatch {
737+ Priority : MID_MATCH_FLOW_PRIORITY ,
738+ InputPort : endpoint .PortNo ,
739+ })
725740 if endpoint .VlanID != 0 {
726- vlanInputTableFromLocalFlow , _ := l .vlanInputTable .NewFlow (ofctrl.FlowMatch {
727- Priority : MID_MATCH_FLOW_PRIORITY ,
728- InputPort : endpoint .PortNo ,
729- })
730741 if err := vlanInputTableFromLocalFlow .SetVlan (endpoint .VlanID ); err != nil {
731742 return err
732743 }
733- if err := vlanInputTableFromLocalFlow .Resubmit (nil , & l .localEndpointL2LearningTable .TableId ); err != nil {
734- return err
735- }
736- if err := vlanInputTableFromLocalFlow .Resubmit (nil , & l .fromLocalRedirectTable .TableId ); err != nil {
737- return err
738- }
739- if err := vlanInputTableFromLocalFlow .Next (ofctrl .NewEmptyElem ()); err != nil {
740- return err
741- }
742- log .Infof ("add from local endpoint flow: %v" , vlanInputTableFromLocalFlow )
743- l .fromLocalEndpointFlow [endpoint .PortNo ] = vlanInputTableFromLocalFlow
744744 }
745+ if err := vlanInputTableFromLocalFlow .LoadField ("nxm_nx_pkt_mark" , uint64 (endpoint .PortNo ),
746+ openflow13 .NewNXRange (0 , 15 )); err != nil {
747+ return err
748+ }
749+ if err := vlanInputTableFromLocalFlow .Resubmit (nil , & l .localEndpointL2LearningTable .TableId ); err != nil {
750+ return err
751+ }
752+ if err := vlanInputTableFromLocalFlow .Resubmit (nil , & l .fromLocalRedirectTable .TableId ); err != nil {
753+ return err
754+ }
755+ if err := vlanInputTableFromLocalFlow .Next (ofctrl .NewEmptyElem ()); err != nil {
756+ return err
757+ }
758+ log .Infof ("add from local endpoint flow: %v" , vlanInputTableFromLocalFlow )
759+ l .fromLocalEndpointFlow [endpoint .PortNo ] = vlanInputTableFromLocalFlow
745760
746761 // Table 1, from local to local bum redirect flow
747762 endpointMac , _ := net .ParseMAC (endpoint .MacAddrStr )
0 commit comments