Assigned bugs to FIXMEs.
[bgpcep.git] / bgp / rib-impl / src / main / java / org / opendaylight / protocol / bgp / rib / impl / BGPSessionProposalImpl.java
index 9c7e1410e9ad51a372a9d1634cce5e176095c102..007f087d007d06b11c1f0f36356ccfd53d379a85 100644 (file)
@@ -7,53 +7,55 @@
  */
 package org.opendaylight.protocol.bgp.rib.impl;
 
-import java.io.Closeable;
-import java.io.IOException;
 import java.util.List;
 
-import org.opendaylight.protocol.bgp.concepts.BGPAddressFamily;
-import org.opendaylight.protocol.bgp.concepts.BGPSubsequentAddressFamily;
-import org.opendaylight.protocol.bgp.concepts.BGPTableType;
-import org.opendaylight.protocol.bgp.parser.BGPParameter;
-import org.opendaylight.protocol.bgp.parser.parameter.AS4BytesCapability;
-import org.opendaylight.protocol.bgp.parser.parameter.MultiprotocolCapability;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionProposal;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.BgpParametersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.c.parameters.CAs4BytesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.c.parameters.c.as4.bytes.As4BytesCapabilityBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.CMultiprotocolBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.c.multiprotocol.MultiprotocolCapabilityBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
 
-import org.opendaylight.protocol.concepts.ASNumber;
-import org.opendaylight.protocol.concepts.IPv4Address;
 import com.google.common.collect.Lists;
 
 /**
  * Basic implementation of BGP Session Proposal. The values are taken from conf-bgp.
  */
-public final class BGPSessionProposalImpl extends BGPSessionProposal implements Closeable {
+public final class BGPSessionProposalImpl implements BGPSessionProposal {
 
        private final short holdTimer;
 
-       private final ASNumber as;
+       private final int as;
 
-       private final IPv4Address bgpId;
+       private final Ipv4Address bgpId;
 
        private final BGPSessionPreferences prefs;
 
-       public BGPSessionProposalImpl(final short holdTimer, final ASNumber as, final IPv4Address bgpId) {
+       public BGPSessionProposalImpl(final short holdTimer, final int as, final Ipv4Address bgpId) {
                this.holdTimer = holdTimer;
                this.as = as;
                this.bgpId = bgpId;
 
-               final BGPTableType ipv4 = new BGPTableType(BGPAddressFamily.IPv4, BGPSubsequentAddressFamily.Unicast);
-               final BGPTableType linkstate = new BGPTableType(BGPAddressFamily.LinkState, BGPSubsequentAddressFamily.Linkstate);
-               final List<BGPParameter> tlvs = Lists.newArrayList();
-               tlvs.add(new MultiprotocolCapability(ipv4));
-               tlvs.add(new MultiprotocolCapability(linkstate));
-               // final Map<BGPTableType, Boolean> tableTypes = Maps.newHashMap();
-               // tableTypes.put(ipv4, true);
-               // tableTypes.put(linkstate,true);
-               // tlvs.add(new GracefulCapability(true, 0, tableTypes));
-               tlvs.add(new AS4BytesCapability(as));
+               // FIXME: BUG-199: the reference to linkstate should be moved to config subsystem!
+               final List<BgpParameters> tlvs = Lists.newArrayList();
+               tlvs.add(new BgpParametersBuilder().setCParameters(
+                               new CMultiprotocolBuilder().setMultiprotocolCapability(
+                                               new MultiprotocolCapabilityBuilder().setAfi(Ipv4AddressFamily.class).setSafi(UnicastSubsequentAddressFamily.class).build()).build()).build());
+               tlvs.add(new BgpParametersBuilder().setCParameters(
+                               new CMultiprotocolBuilder().setMultiprotocolCapability(
+                                               new MultiprotocolCapabilityBuilder().setAfi(LinkstateAddressFamily.class).setSafi(
+                                                               LinkstateSubsequentAddressFamily.class).build()).build()).build());
+               tlvs.add(new BgpParametersBuilder().setCParameters(
+                               new CAs4BytesBuilder().setAs4BytesCapability(new As4BytesCapabilityBuilder().setAsNumber(new AsNumber((long) as)).build()).build()).build());
                this.prefs = new BGPSessionPreferences(as, holdTimer, bgpId, tlvs);
-
        }
 
        @Override
@@ -61,11 +63,6 @@ public final class BGPSessionProposalImpl extends BGPSessionProposal implements
                return this.prefs;
        }
 
-       @Override
-       public void close() throws IOException {
-               // nothing to close
-       }
-
        /**
         * @return the holdTimer
         */
@@ -76,14 +73,14 @@ public final class BGPSessionProposalImpl extends BGPSessionProposal implements
        /**
         * @return the as
         */
-       public ASNumber getAs() {
+       public int getAs() {
                return this.as;
        }
 
        /**
         * @return the bgpId
         */
-       public IPv4Address getBgpId() {
+       public Ipv4Address getBgpId() {
                return this.bgpId;
        }
 }