Committed by
Gerrit Code Review
CORD-357 Fixed not to pop or push s-tag
And also remove vSG related rules when vSG VM destroyed Change-Id: I3cecd558a0d84f882bea9ce849568a7be8380330
Showing
1 changed file
with
10 additions
and
16 deletions
| ... | @@ -213,7 +213,7 @@ public class CordVtnRuleInstaller { | ... | @@ -213,7 +213,7 @@ public class CordVtnRuleInstaller { |
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | /** | 215 | /** |
| 216 | - * Removes basic rules related to a given flow information. | 216 | + * Removes all rules related to a given service VM host. |
| 217 | * | 217 | * |
| 218 | * @param host host to be removed | 218 | * @param host host to be removed |
| 219 | */ | 219 | */ |
| ... | @@ -236,6 +236,11 @@ public class CordVtnRuleInstaller { | ... | @@ -236,6 +236,11 @@ public class CordVtnRuleInstaller { |
| 236 | processFlowRule(false, flowRule); | 236 | processFlowRule(false, flowRule); |
| 237 | continue; | 237 | continue; |
| 238 | } | 238 | } |
| 239 | + | ||
| 240 | + PortNumber output = getOutputFromTreatment(flowRule); | ||
| 241 | + if (output != null && output.equals(host.location().port())) { | ||
| 242 | + processFlowRule(false, flowRule); | ||
| 243 | + } | ||
| 239 | } | 244 | } |
| 240 | 245 | ||
| 241 | MacAddress dstMac = getDstMacFromTreatment(flowRule); | 246 | MacAddress dstMac = getDstMacFromTreatment(flowRule); |
| ... | @@ -519,17 +524,7 @@ public class CordVtnRuleInstaller { | ... | @@ -519,17 +524,7 @@ public class CordVtnRuleInstaller { |
| 519 | if (!mastershipService.isLocalMaster(host.location().deviceId())) { | 524 | if (!mastershipService.isLocalMaster(host.location().deviceId())) { |
| 520 | return; | 525 | return; |
| 521 | } | 526 | } |
| 522 | - | 527 | + // TODO remove management network specific rules |
| 523 | - for (FlowRule flowRule : flowRuleService.getFlowRulesById(appId)) { | ||
| 524 | - if (flowRule.deviceId().equals(host.location().deviceId())) { | ||
| 525 | - PortNumber port = getOutputFromTreatment(flowRule); | ||
| 526 | - if (port != null && port.equals(host.location().port())) { | ||
| 527 | - processFlowRule(false, flowRule); | ||
| 528 | - } | ||
| 529 | - } | ||
| 530 | - | ||
| 531 | - // TODO remove the other rules if mgmt network is not in use | ||
| 532 | - } | ||
| 533 | } | 528 | } |
| 534 | 529 | ||
| 535 | /** | 530 | /** |
| ... | @@ -549,11 +544,11 @@ public class CordVtnRuleInstaller { | ... | @@ -549,11 +544,11 @@ public class CordVtnRuleInstaller { |
| 549 | 544 | ||
| 550 | // for traffics with s-tag, strip the tag and take through the vSG VM | 545 | // for traffics with s-tag, strip the tag and take through the vSG VM |
| 551 | TrafficSelector selector = DefaultTrafficSelector.builder() | 546 | TrafficSelector selector = DefaultTrafficSelector.builder() |
| 547 | + .matchInPort(dpPort) | ||
| 552 | .matchVlanId(serviceVlan) | 548 | .matchVlanId(serviceVlan) |
| 553 | .build(); | 549 | .build(); |
| 554 | 550 | ||
| 555 | TrafficTreatment treatment = DefaultTrafficTreatment.builder() | 551 | TrafficTreatment treatment = DefaultTrafficTreatment.builder() |
| 556 | - .popVlan() | ||
| 557 | .setOutput(vSgHost.location().port()) | 552 | .setOutput(vSgHost.location().port()) |
| 558 | .build(); | 553 | .build(); |
| 559 | 554 | ||
| ... | @@ -573,11 +568,10 @@ public class CordVtnRuleInstaller { | ... | @@ -573,11 +568,10 @@ public class CordVtnRuleInstaller { |
| 573 | // lower priority to avoid conflict with WAN tag | 568 | // lower priority to avoid conflict with WAN tag |
| 574 | selector = DefaultTrafficSelector.builder() | 569 | selector = DefaultTrafficSelector.builder() |
| 575 | .matchInPort(vSgHost.location().port()) | 570 | .matchInPort(vSgHost.location().port()) |
| 571 | + .matchVlanId(serviceVlan) | ||
| 576 | .build(); | 572 | .build(); |
| 577 | 573 | ||
| 578 | treatment = DefaultTrafficTreatment.builder() | 574 | treatment = DefaultTrafficTreatment.builder() |
| 579 | - .pushVlan() | ||
| 580 | - .setVlanId(serviceVlan) | ||
| 581 | .setOutput(dpPort) | 575 | .setOutput(dpPort) |
| 582 | .build(); | 576 | .build(); |
| 583 | 577 | ||
| ... | @@ -585,7 +579,7 @@ public class CordVtnRuleInstaller { | ... | @@ -585,7 +579,7 @@ public class CordVtnRuleInstaller { |
| 585 | .fromApp(appId) | 579 | .fromApp(appId) |
| 586 | .withSelector(selector) | 580 | .withSelector(selector) |
| 587 | .withTreatment(treatment) | 581 | .withTreatment(treatment) |
| 588 | - .withPriority(LOW_PRIORITY) | 582 | + .withPriority(DEFAULT_PRIORITY) |
| 589 | .forDevice(vSgHost.location().deviceId()) | 583 | .forDevice(vSgHost.location().deviceId()) |
| 590 | .forTable(TABLE_Q_IN_Q) | 584 | .forTable(TABLE_Q_IN_Q) |
| 591 | .makePermanent() | 585 | .makePermanent() | ... | ... |
-
Please register or login to post a comment