+ public class BfdConfigReactor
+ extends AsyncDataTreeChangeListenerBase<BfdConfig, BfdConfigReactor>
+ implements ClusteredDataTreeChangeListener<BfdConfig> {
+
+ private static final String YANG_OBJ = "BfdConfig ";
+
+ public BfdConfigReactor() {
+ super(BfdConfig.class, BfdConfigReactor.class);
+ }
+
+ @Override
+ protected void add(InstanceIdentifier<BfdConfig> iid, BfdConfig val) {
+ if (!isBGPEntityOwner()) {
+ return;
+ }
+ BgpRouter br = getClient(YANG_OBJ);
+ LOG.debug("received bfd config: bfd enabled {} min-rx {} min-tx {} detect-mul {} mhop {}",
+ val.isBfdEnabled(), val.getMinRx(), val.getMinTx(),
+ val.getDetectMult(), val.isMultihop());
+ if (br == null) {
+ LOG.debug(YANG_OBJ + "{} Unable to process add {}",
+ BgpRouterException.BGP_ERR_NOT_INITED, ADD_WARN);
+ return;
+ }
+ if (val.isBfdEnabled() == false) {
+ LOG.debug("BFD not enabled. Ignoring the config add");
+ return;
+ }
+ int minRx = val.getMinRx().intValue();
+ int minTx = val.getMinTx().intValue();
+ int detectMult = val.getDetectMult().intValue();
+ boolean multiHop = val.isMultihop();
+ try {
+ br.addBfd(detectMult, minRx, minTx,multiHop);
+ } catch (TException | BgpRouterException e) {
+ LOG.error("{} get {}, Add received exception;", YANG_OBJ, ADD_WARN, e);
+ }
+ }
+
+ @Override
+ protected BfdConfigReactor getDataTreeChangeListener() {
+ return BfdConfigReactor.this;
+ }
+
+ @Override
+ protected InstanceIdentifier<BfdConfig> getWildCardPath() {
+ return InstanceIdentifier.create(BfdConfig.class);
+ }
+
+ @Override
+ protected void remove(InstanceIdentifier<BfdConfig> iid, BfdConfig val) {
+ if (!isBGPEntityOwner()) {
+ return;
+ }
+ LOG.debug("received bfd config removal");
+ BgpRouter br = getClient(YANG_OBJ);
+ if (br == null) {
+ LOG.debug("{} Unable to process del {} {}", YANG_OBJ,
+ BgpRouterException.BGP_ERR_NOT_INITED, ADD_WARN);
+ return;
+ }
+ try {
+ br.delBfd();
+ } catch (TException | BgpRouterException e) {
+ LOG.error("{} get {}, Del received exception;", YANG_OBJ, ADD_WARN, e);
+ }
+
+ }
+
+ @Override
+ protected void update(InstanceIdentifier<BfdConfig> iid,
+ BfdConfig oldval, BfdConfig newval) {
+ LOG.debug("received bfd config: updated oldval bfd enabled {}"
+ + "min-rx {} min-tx {} detect-mul {} mhop {}",
+ oldval.isBfdEnabled(), oldval.getMinRx(), oldval.getMinTx(),
+ oldval.getDetectMult(), oldval.isMultihop());
+ LOG.debug("received bfd config: updated newval bfd enabled {}"
+ + "min-rx {} min-tx {} detect-mul {} mhop {}",
+ newval.isBfdEnabled(), newval.getMinRx(), newval.getMinTx(),
+ newval.getDetectMult(), newval.isMultihop());
+ if (oldval.isBfdEnabled()) {
+ LOG.debug("deleting bfd config on an update");
+ remove(iid, oldval);
+ }
+ LOG.debug("adding bfd config on an update");
+ add(iid, newval);
+ }
+ }
+
+