From 4effa06b8e35453e004562ad35d7c8bad80a8c35 Mon Sep 17 00:00:00 2001 From: Marc De Leenheer Date: Wed, 15 Mar 2017 11:40:34 -0700 Subject: [PATCH] Make LinkManager aware of unidirectional links. Change-Id: I8a1a9b1909bf47dcca65fd2440dd54599916e193 --- .../net/link/impl/LinkManager.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java b/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java index cfed82679b..30273345a3 100644 --- a/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java +++ b/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java @@ -346,25 +346,28 @@ public class LinkManager removeLink(lk.dst(), lk.src()); return; } - Link link = getLink(lk.src(), lk.dst()); - LinkDescription fldesc; - LinkDescription rldesc; + + doUpdate(lk.src(), lk.dst(), cfg); + if (cfg.isBidirectional()) { + doUpdate(lk.dst(), lk.src(), cfg); + } + } + + private void doUpdate(ConnectPoint src, ConnectPoint dst, BasicLinkConfig cfg) { + Link link = getLink(src, dst); + LinkDescription desc; + if (link == null) { - fldesc = BasicLinkOperator.descriptionOf(lk.src(), lk.dst(), cfg); - rldesc = BasicLinkOperator.descriptionOf(lk.dst(), lk.src(), cfg); + desc = BasicLinkOperator.descriptionOf(src, dst, cfg); } else { - fldesc = BasicLinkOperator.combine(cfg, - BasicLinkOperator.descriptionOf(lk.src(), lk.dst(), link)); - rldesc = BasicLinkOperator.combine(cfg, - BasicLinkOperator.descriptionOf(lk.dst(), lk.src(), link)); + desc = BasicLinkOperator.combine(cfg, + BasicLinkOperator.descriptionOf(src, dst, link)); } ProviderId pid = Optional.ofNullable(link) - .map(Link::providerId) - .orElse(ProviderId.NONE); - store.createOrUpdateLink(pid, fldesc); - store.createOrUpdateLink(pid, rldesc); + .map(Link::providerId) + .orElse(ProviderId.NONE); + store.createOrUpdateLink(pid, desc); } - } }