import io.netty.buffer.ByteBuf;
import org.opendaylight.protocol.util.Ipv4Util;
import org.opendaylight.protocol.util.Ipv6Util;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.CNextHop;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.EmptyNextHopCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv4NextHopCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv4NextHopCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv6NextHopCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv6NextHopCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHop;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHopBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.CNextHop;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.EmptyNextHopCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.Ipv4NextHopCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.Ipv4NextHopCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.Ipv6NextHopCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.Ipv6NextHopCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHop;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHopBuilder;
/**
* Utility class for of CNextHop serialization and parsing.
*/
public final class NextHopUtil {
-
private NextHopUtil() {
- throw new UnsupportedOperationException();
+ // Hidden on purpose
}
/**
public static CNextHop parseNextHop(final ByteBuf buffer) {
switch (buffer.writerIndex()) {
case Ipv4Util.IP4_LENGTH:
- return new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder()
- .setGlobal(Ipv4Util.addressForByteBuf(buffer)).build()).build();
+ return parseNextHopIpv4(buffer);
case Ipv6Util.IPV6_LENGTH:
- return new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder()
- .setGlobal(Ipv6Util.addressForByteBuf(buffer)).build()).build();
+ return parseNextHopIpv6(buffer);
case Ipv6Util.IPV6_LENGTH * 2:
- return new Ipv6NextHopCaseBuilder().setIpv6NextHop(
- new Ipv6NextHopBuilder().setGlobal(Ipv6Util.addressForByteBuf(buffer))
- .setLinkLocal(Ipv6Util.addressForByteBuf(buffer)).build()).build();
+ return parseNextHopFullIpv6(buffer);
default:
throw new IllegalArgumentException("Cannot parse NEXT_HOP attribute. Wrong bytes length: "
+ buffer.writerIndex());
}
}
+
+ /**
+ * Parses CNextHop IPv4 address from given ByteBuf, which has already been checked for size.
+ *
+ * @param buffer contains byte array representation of CNextHop
+ * @return CNexthop object
+ */
+ public static CNextHop parseNextHopIpv4(final ByteBuf buffer) {
+ return new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder()
+ .setGlobal(Ipv4Util.addressForByteBuf(buffer)).build()).build();
+ }
+
+ /**
+ * Parses CNextHop IPv6 global address from given ByteBuf, which has already been checked for size.
+ *
+ * @param buffer contains byte array representation of CNextHop
+ * @return CNexthop object
+ */
+ public static CNextHop parseNextHopIpv6(final ByteBuf buffer) {
+ return new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder()
+ .setGlobal(Ipv6Util.addressForByteBuf(buffer)).build()).build();
+ }
+
+ /**
+ * Parses CNextHop IPv6 global+local address from given ByteBuf, which has already been checked for size.
+ *
+ * @param buffer contains byte array representation of CNextHop
+ * @return CNexthop object
+ */
+ public static CNextHop parseNextHopFullIpv6(final ByteBuf buffer) {
+ return new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder()
+ .setGlobal(Ipv6Util.addressForByteBuf(buffer))
+ .setLinkLocal(Ipv6Util.addressForByteBuf(buffer)).build()).build();
+ }
}