@@ -225,10 +225,6 @@ func (plugin *OsdnNode) SetupSDN() (bool, error) {
225
225
if err != nil {
226
226
return false , err
227
227
}
228
- err = plugin .ovs .SetFrags ("nx-match" )
229
- if err != nil {
230
- return false , err
231
- }
232
228
_ = plugin .ovs .DeletePort (VXLAN )
233
229
_ , err = plugin .ovs .AddPort (VXLAN , 1 , "type=vxlan" , `options:remote_ip="flow"` , `options:key="flow"` )
234
230
if err != nil {
@@ -461,44 +457,35 @@ func (plugin *OsdnNode) AddServiceRules(service *kapi.Service, netID uint32) {
461
457
glog .V (5 ).Infof ("AddServiceRules for %v" , service )
462
458
463
459
otx := plugin .ovs .NewTransaction ()
464
- action := fmt .Sprintf (", priority=100, actions=load:%d->NXM_NX_REG1[], load:2->NXM_NX_REG2[], goto_table:80" , netID )
465
-
466
- // Add blanket rule allowing subsequent IP fragments
467
- otx .AddFlow (generateBaseServiceRule (service .Spec .ClusterIP ) + ", ip_frag=later" + action )
468
-
469
460
for _ , port := range service .Spec .Ports {
470
- baseRule , err := generateBaseAddServiceRule ( service .Spec .ClusterIP , port .Protocol , int (port .Port ))
471
- if err != nil {
472
- glog .Errorf ("Error creating OVS flow for service %v, netid %d: %v" , service , netID , err )
461
+ otx . AddFlow ( generateAddServiceRule ( netID , service .Spec .ClusterIP , port .Protocol , int (port .Port ) ))
462
+ if err := otx . EndTransaction (); err != nil {
463
+ glog .Errorf ("Error adding OVS flows for service %v, netid %d: %v" , service , netID , err )
473
464
}
474
- otx .AddFlow (baseRule + action )
475
- }
476
-
477
- if err := otx .EndTransaction (); err != nil {
478
- glog .Errorf ("Error adding OVS flows for service %v, netid %d: %v" , service , netID , err )
479
465
}
480
466
}
481
467
482
468
func (plugin * OsdnNode ) DeleteServiceRules (service * kapi.Service ) {
483
469
glog .V (5 ).Infof ("DeleteServiceRules for %v" , service )
484
470
485
471
otx := plugin .ovs .NewTransaction ()
486
- otx .DeleteFlows (generateBaseServiceRule (service .Spec .ClusterIP ))
487
- otx .EndTransaction ()
472
+ for _ , port := range service .Spec .Ports {
473
+ otx .DeleteFlows (generateDeleteServiceRule (service .Spec .ClusterIP , port .Protocol , int (port .Port )))
474
+ if err := otx .EndTransaction (); err != nil {
475
+ glog .Errorf ("Error deleting OVS flows for service %v: %v" , service , err )
476
+ }
477
+ }
488
478
}
489
479
490
- func generateBaseServiceRule (IP string ) string {
491
- return fmt .Sprintf ("table=60, ip , nw_dst=%s" , IP )
480
+ func generateBaseServiceRule (IP string , protocol kapi. Protocol , port int ) string {
481
+ return fmt .Sprintf ("table=60, %s , nw_dst=%s, tp_dst=%d " , strings . ToLower ( string ( protocol )), IP , port )
492
482
}
493
483
494
- func generateBaseAddServiceRule (IP string , protocol kapi.Protocol , port int ) (string , error ) {
495
- var dst string
496
- if protocol == kapi .ProtocolUDP {
497
- dst = fmt .Sprintf (", udp, udp_dst=%d" , port )
498
- } else if protocol == kapi .ProtocolTCP {
499
- dst = fmt .Sprintf (", tcp, tcp_dst=%d" , port )
500
- } else {
501
- return "" , fmt .Errorf ("unhandled protocol %v" , protocol )
502
- }
503
- return generateBaseServiceRule (IP ) + dst , nil
484
+ func generateAddServiceRule (netID uint32 , IP string , protocol kapi.Protocol , port int ) string {
485
+ baseRule := generateBaseServiceRule (IP , protocol , port )
486
+ return fmt .Sprintf ("%s, priority=100, actions=load:%d->NXM_NX_REG1[], load:2->NXM_NX_REG2[], goto_table:80" , baseRule , netID )
487
+ }
488
+
489
+ func generateDeleteServiceRule (IP string , protocol kapi.Protocol , port int ) string {
490
+ return generateBaseServiceRule (IP , protocol , port )
504
491
}
0 commit comments