summaryrefslogtreecommitdiffstats
path: root/vpp-common/vpp-translate-utils/src/main/java/io
diff options
context:
space:
mode:
Diffstat (limited to 'vpp-common/vpp-translate-utils/src/main/java/io')
-rw-r--r--vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv4Translator.java33
-rw-r--r--vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv6Translator.java39
-rw-r--r--vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MacTranslator.java17
3 files changed, 89 insertions, 0 deletions
diff --git a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv4Translator.java b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv4Translator.java
index 24f4ae9aa..5f8a283ed 100644
--- a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv4Translator.java
+++ b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv4Translator.java
@@ -18,9 +18,14 @@ package io.fd.hc2vpp.common.translate.util;
import static com.google.common.base.Preconditions.checkNotNull;
+import io.fd.vpp.jvpp.core.types.Address;
+import io.fd.vpp.jvpp.core.types.AddressFamily;
+import io.fd.vpp.jvpp.core.types.AddressUnion;
+import io.fd.vpp.jvpp.core.types.Ip4Address;
import java.util.Arrays;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
@@ -83,6 +88,34 @@ public interface Ipv4Translator extends ByteDataTranslator {
return ipv4AddressNoZoneToArray(ipv4Addr.getValue());
}
+ /**
+ * Transform Ipv4 address to a Ip4Address acceptable by VPP.
+ *
+ * @return byte array with address bytes
+ */
+ default Address ipv4AddressNoZoneToAddress(final Ipv4AddressNoZone ipv4Addr) {
+ Address address = new Address();
+ address.af = AddressFamily.ADDRESS_IP4;
+ Ip4Address ip4Address = new Ip4Address();
+ ip4Address.ip4Address = ipv4AddressNoZoneToArray(ipv4Addr);
+ address.un = new AddressUnion(ip4Address);
+ return address;
+ }
+
+ /**
+ * Transform Ipv4 address to a Ip4Address acceptable by VPP.
+ *
+ * @return byte array with address bytes
+ */
+ default Address ipv4AddressToAddress(final Ipv4Address ipv4Addr) {
+ Address address = new Address();
+ address.af = AddressFamily.ADDRESS_IP4;
+ Ip4Address ip4Address = new Ip4Address();
+ ip4Address.ip4Address = ipv4AddressNoZoneToArray(ipv4Addr.getValue());
+ address.un = new AddressUnion(ip4Address);
+ return address;
+ }
+
default byte[] ipv4AddressNoZoneToArray(final String ipv4Addr) {
byte[] retval = new byte[4];
String[] dots = ipv4Addr.split("\\.");
diff --git a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv6Translator.java b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv6Translator.java
index b1199d7f7..d5c0ae2e3 100644
--- a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv6Translator.java
+++ b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/Ipv6Translator.java
@@ -21,6 +21,11 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import com.google.common.net.InetAddresses;
+import io.fd.vpp.jvpp.core.types.Address;
+import io.fd.vpp.jvpp.core.types.AddressFamily;
+import io.fd.vpp.jvpp.core.types.AddressUnion;
+import io.fd.vpp.jvpp.core.types.Ip6Address;
+import io.fd.vpp.jvpp.core.types.Prefix;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
@@ -46,7 +51,24 @@ public interface Ipv6Translator extends ByteDataTranslator {
}
/**
+ * Transform Ipv6 address to a Address acceptable by VPP.
+ *
+ * @param address {@link Ipv6Address} to be translated
+ * @return Vpp {@link Address} from Ipv6 address
+ */
+ default Address ipv6AddressToAddress(@Nonnull final Ipv6Address address) {
+ Address addr = new Address();
+ addr.af = AddressFamily.ADDRESS_IP6;
+ Ip6Address ip6Address = new Ip6Address();
+ ip6Address.ip6Address = ipv6AddressNoZoneToArray(address);
+ addr.un = new AddressUnion(ip6Address);
+ return addr;
+ }
+
+ /**
* Creates address array from address part of {@link Ipv6Prefix}
+ *
+ * @return Ipv6 address as byte array
*/
default byte[] ipv6AddressPrefixToArray(@Nonnull final Ipv6Prefix ipv6Prefix) {
checkNotNull(ipv6Prefix, "Cannot convert null prefix");
@@ -56,6 +78,23 @@ public interface Ipv6Translator extends ByteDataTranslator {
}
/**
+ * Transforms {@link Prefix} from {@link Ipv6Prefix}
+ * @param ipv6Prefix prefix to be translated
+ * @return Vpp {@link Prefix} from {@link Ipv6Prefix}
+ */
+ default Prefix ipv6AddressPrefixToPrefix(@Nonnull final Ipv6Prefix ipv6Prefix) {
+ checkNotNull(ipv6Prefix, "Cannot convert null prefix");
+ Prefix prefix = new Prefix();
+ prefix.address = new Address();
+ prefix.address.af = AddressFamily.ADDRESS_IP6;
+ Ip6Address ip6Address = new Ip6Address();
+ ip6Address.ip6Address = ipv6AddressPrefixToArray(ipv6Prefix);
+ prefix.address.un = new AddressUnion(ip6Address);
+ prefix.addressLength = extractPrefix(ipv6Prefix);
+ return prefix;
+ }
+
+ /**
* Extracts {@link Ipv6Prefix} prefix
*/
default byte extractPrefix(Ipv6Prefix data) {
diff --git a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MacTranslator.java b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MacTranslator.java
index 71b8a15e6..657029eb3 100644
--- a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MacTranslator.java
+++ b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MacTranslator.java
@@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Splitter;
+import io.fd.vpp.jvpp.core.types.MacAddress;
import java.util.Arrays;
import java.util.List;
import java.util.function.BiConsumer;
@@ -37,6 +38,9 @@ public interface MacTranslator {
/**
* Parse string represented mac address (using ":" as separator) into a byte array
+ *
+ * @param macAddress string representation of MAC address (using ":" as separator)
+ * @return byte array mac address
*/
@Nonnull
default byte[] parseMac(@Nonnull final String macAddress) {
@@ -45,6 +49,19 @@ public interface MacTranslator {
return parseMacLikeString(parts);
}
+ /**
+ * Parse string represented mac address (using ":" as separator) into a MacAddress in VPP
+ *
+ * @param macAddress string representation of MAC address (using ":" as separator)
+ * @return VPP MacAddress
+ */
+ @Nonnull
+ default MacAddress parseMacAddress(@Nonnull final String macAddress) {
+ MacAddress mac = new MacAddress();
+ mac.macaddress = parseMac(macAddress);
+ return mac;
+ }
+
default byte[] parseMacLikeString(final List<String> strings) {
return strings.stream().limit(6).map(this::parseHexByte).collect(
() -> new byte[strings.size()],