summaryrefslogtreecommitdiffstats
path: root/vpp-api/java/japi/org/openvpp/vppjapi
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2016-04-09 03:16:30 +0200
committerDave Wallace <dwallacelf@gmail.com>2016-04-20 16:50:29 +0000
commit6855f6cdfee8c479f1e0ae440ce87a91ff41a708 (patch)
treee438e21c8107a675dc3a3141c6af6ba0ab458992 /vpp-api/java/japi/org/openvpp/vppjapi
parent633951c3d8dc1640813b4778f3e35463d08f3795 (diff)
Python-API: Inital commit of Python bindings for the VPP API.
See: https://wiki.fd.io/view/VPP/Python_API Change-Id: If135fc32208c7031787e1935b399d930e0e1ea1f Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'vpp-api/java/japi/org/openvpp/vppjapi')
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppApiCallbacks.java35
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainDetails.java30
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainInterfaceDetails.java21
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppConn.java237
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppIPv4Address.java26
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppIPv6Address.java27
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceCounters.java77
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceDetails.java71
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppL2Fib.java35
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppVersion.java31
-rw-r--r--vpp-api/java/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java33
11 files changed, 623 insertions, 0 deletions
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppApiCallbacks.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppApiCallbacks.java
new file mode 100644
index 00000000000..df5b953300e
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppApiCallbacks.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+import java.io.IOException;
+import org.openvpp.vppjapi.vppApi;
+
+public abstract class vppApiCallbacks extends vppApi {
+ public vppApiCallbacks(String clientName) throws IOException {
+ super(clientName);
+ }
+/* Disabled!
+ *
+ * public abstract void interfaceDetails(
+ int ifIndex, String interfaceName, int supIfIndex, byte[] physAddr,
+ byte adminUp, byte linkUp, byte linkDuplex, byte linkSpeed,
+ int subId, byte subDot1ad, byte subNumberOfTags, int subOuterVlanId, int subInnerVlanId,
+ byte subExactMatch, byte subDefault, byte subOuterVlanIdAny, byte subInnerVlanIdAny,
+ int vtrOp, int vtrPushDot1q, int vtrTag1, int vtrTag2);
+ */
+
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainDetails.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainDetails.java
new file mode 100644
index 00000000000..db859a07204
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainDetails.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+import org.openvpp.vppjapi.vppBridgeDomainInterfaceDetails;
+
+public final class vppBridgeDomainDetails {
+ public String name;
+ public int bdId;
+ public boolean flood;
+ public boolean uuFlood;
+ public boolean forward;
+ public boolean learn;
+ public boolean arpTerm;
+ public String bviInterfaceName;
+ public vppBridgeDomainInterfaceDetails[] interfaces;
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainInterfaceDetails.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainInterfaceDetails.java
new file mode 100644
index 00000000000..ab99ee45347
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppBridgeDomainInterfaceDetails.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppBridgeDomainInterfaceDetails {
+ public String interfaceName;
+ public byte splitHorizonGroup;
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppConn.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppConn.java
new file mode 100644
index 00000000000..3e8c12a93f9
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppConn.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.util.Set;
+
+import org.openvpp.vppjapi.vppVersion;
+import org.openvpp.vppjapi.vppInterfaceDetails;
+import org.openvpp.vppjapi.vppInterfaceCounters;
+import org.openvpp.vppjapi.vppBridgeDomainDetails;
+import org.openvpp.vppjapi.vppIPv4Address;
+import org.openvpp.vppjapi.vppIPv6Address;
+import org.openvpp.vppjapi.vppVxlanTunnelDetails;
+
+public class vppConn implements AutoCloseable {
+ private static final String LIBNAME = "libvppjni.so.0.0.0";
+
+ static {
+ try {
+ loadLibrary();
+ } catch (Exception e) {
+ System.out.printf("Can't find vpp jni library: %s\n", LIBNAME);
+ throw new ExceptionInInitializerError(e);
+ }
+ }
+
+ private static void loadStream(final InputStream is) throws IOException {
+ final Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-x---");
+ final Path p = Files.createTempFile(LIBNAME, null, PosixFilePermissions.asFileAttribute(perms));
+ try {
+ Files.copy(is, p, StandardCopyOption.REPLACE_EXISTING);
+
+ try {
+ Runtime.getRuntime().load(p.toString());
+ } catch (UnsatisfiedLinkError e) {
+ throw new IOException(String.format("Failed to load library %s", p), e);
+ }
+ } finally {
+ try {
+ Files.deleteIfExists(p);
+ } catch (IOException e) {
+ }
+ }
+ }
+
+ private static void loadLibrary() throws IOException {
+ try (final InputStream is = vppConn.class.getResourceAsStream('/' + LIBNAME)) {
+ if (is == null) {
+ throw new IOException(String.format("Failed to open library resource %s",
+ LIBNAME));
+ }
+ loadStream(is);
+ }
+ }
+
+ private static vppConn currentConnection = null;
+ private final String clientName;
+ private volatile boolean disconnected = false;
+
+ // Hidden on purpose to prevent external instantiation
+ vppConn(final String clientName) throws IOException {
+ this.clientName = clientName;
+
+ synchronized (vppConn.class) {
+ if (currentConnection != null) {
+ throw new IOException("Already connected as " + currentConnection.clientName);
+ }
+
+ final int ret = clientConnect(clientName);
+ if (ret != 0) {
+ throw new IOException("Connection returned error " + ret);
+ }
+
+ currentConnection = this;
+ }
+ }
+
+ @Override
+ public synchronized final void close() {
+ if (!disconnected) {
+ disconnected = true;
+
+ synchronized (vppConn.class) {
+ clientDisconnect();
+ currentConnection = null;
+ }
+ }
+ }
+
+ /**
+ * Check if this instance is connected.
+ *
+ * @throws IllegalStateException if this instance was disconnected.
+ */
+ protected final void checkConnected() {
+ if (disconnected) {
+ throw new IllegalStateException("Disconnected client " + clientName);
+ }
+ }
+
+ public final int getRetval(int context, int release) {
+ checkConnected();
+ return getRetval0(context, release);
+ }
+
+ public final String getInterfaceList (String nameFilter) {
+ checkConnected();
+ return getInterfaceList0(nameFilter);
+ }
+
+ public final int swIfIndexFromName (String interfaceName) {
+ checkConnected();
+ return swIfIndexFromName0(interfaceName);
+ }
+
+ public final String interfaceNameFromSwIfIndex (int swIfIndex) {
+ checkConnected();
+ return interfaceNameFromSwIfIndex0(swIfIndex);
+ }
+
+ public final void clearInterfaceTable () {
+ checkConnected();
+ clearInterfaceTable0();
+ }
+
+ public final vppInterfaceDetails[] swInterfaceDump (byte nameFilterValid, byte [] nameFilter) {
+ checkConnected();
+ return swInterfaceDump0(nameFilterValid, nameFilter);
+ }
+
+ public final int bridgeDomainIdFromName(String bridgeDomain) {
+ checkConnected();
+ return bridgeDomainIdFromName0(bridgeDomain);
+ }
+
+ public final int findOrAddBridgeDomainId(String bridgeDomain) {
+ checkConnected();
+ return findOrAddBridgeDomainId0(bridgeDomain);
+ }
+
+ public final vppVersion getVppVersion() {
+ checkConnected();
+ return getVppVersion0();
+ }
+
+ public final vppInterfaceCounters getInterfaceCounters(int swIfIndex) {
+ checkConnected();
+ return getInterfaceCounters0(swIfIndex);
+ }
+
+ public final int[] bridgeDomainDump(int bdId) {
+ checkConnected();
+ return bridgeDomainDump0(bdId);
+ }
+
+ public final vppBridgeDomainDetails getBridgeDomainDetails(int bdId) {
+ checkConnected();
+ return getBridgeDomainDetails0(bdId);
+ }
+
+ public final vppL2Fib[] l2FibTableDump(int bdId) {
+ checkConnected();
+ return l2FibTableDump0(bdId);
+ }
+
+ public final int bridgeDomainIdFromInterfaceName(String interfaceName) {
+ checkConnected();
+ return bridgeDomainIdFromInterfaceName0(interfaceName);
+ }
+
+ public final vppIPv4Address[] ipv4AddressDump(String interfaceName) {
+ checkConnected();
+ return ipv4AddressDump0(interfaceName);
+ }
+
+ public final vppIPv6Address[] ipv6AddressDump(String interfaceName) {
+ checkConnected();
+ return ipv6AddressDump0(interfaceName);
+ }
+
+ public final vppVxlanTunnelDetails[] vxlanTunnelDump(int swIfIndex) {
+ checkConnected();
+ return vxlanTunnelDump0(swIfIndex);
+ }
+
+ public final int setInterfaceDescription(String ifName, String ifDesc) {
+ checkConnected();
+ return setInterfaceDescription0(ifName, ifDesc);
+ }
+
+ public final String getInterfaceDescription(String ifName) {
+ checkConnected();
+ return getInterfaceDescription0(ifName);
+ }
+
+ private static native int clientConnect(String clientName);
+ private static native void clientDisconnect();
+ private static native int getRetval0(int context, int release);
+ private static native String getInterfaceList0(String nameFilter);
+ private static native int swIfIndexFromName0(String interfaceName);
+ private static native String interfaceNameFromSwIfIndex0(int swIfIndex);
+ private static native void clearInterfaceTable0();
+ private static native vppInterfaceDetails[] swInterfaceDump0(byte nameFilterValid, byte [] nameFilter);
+ private static native int bridgeDomainIdFromName0(String bridgeDomain);
+ private static native int findOrAddBridgeDomainId0(String bridgeDomain);
+ private static native vppVersion getVppVersion0();
+ private static native vppInterfaceCounters getInterfaceCounters0(int swIfIndex);
+ private static native int[] bridgeDomainDump0(int bdId);
+ private static native vppBridgeDomainDetails getBridgeDomainDetails0(int bdId);
+ private static native vppL2Fib[] l2FibTableDump0(int bdId);
+ private static native int bridgeDomainIdFromInterfaceName0(String interfaceName);
+ private static native vppIPv4Address[] ipv4AddressDump0(String interfaceName);
+ private static native vppIPv6Address[] ipv6AddressDump0(String interfaceName);
+ private static native vppVxlanTunnelDetails[] vxlanTunnelDump0(int swIfIndex);
+ private static native int setInterfaceDescription0(String ifName, String ifDesc);
+ private static native String getInterfaceDescription0(String ifName);
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppIPv4Address.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppIPv4Address.java
new file mode 100644
index 00000000000..046ceab52f0
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppIPv4Address.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppIPv4Address {
+ public final int ip;
+ public final byte prefixLength;
+
+ public vppIPv4Address(int ip, byte prefixLength) {
+ this.ip = ip;
+ this.prefixLength = prefixLength;
+ }
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppIPv6Address.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppIPv6Address.java
new file mode 100644
index 00000000000..6690a5db981
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppIPv6Address.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public class vppIPv6Address {
+ // FIXME: this is dangerous
+ public final byte[] ip;
+ public final byte prefixLength;
+
+ public vppIPv6Address(byte[] ip, byte prefixLength) {
+ this.ip = ip;
+ this.prefixLength = prefixLength;
+ }
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceCounters.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
new file mode 100644
index 00000000000..b2687fb8efb
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppInterfaceCounters {
+
+ public final long rxOctets;
+ public final long rxIp4;
+ public final long rxIp6;
+ public final long rxUnicast;
+ public final long rxMulticast;
+ public final long rxBroadcast;
+ public final long rxDiscard;
+ public final long rxFifoFull;
+ public final long rxError;
+ public final long rxUnknownProto;
+ public final long rxMiss;
+
+ public final long txOctets;
+ public final long txIp4;
+ public final long txIp6;
+ public final long txUnicast;
+ public final long txMulticast;
+ public final long txBroadcast;
+ public final long txDiscard;
+ public final long txFifoFull;
+ public final long txError;
+ public final long txUnknownProto;
+ public final long txMiss;
+
+ public vppInterfaceCounters(
+ long rxOctets, long rxIp4, long rxIp6, long rxUni, long rxMulti,
+ long rxBcast, long rxDiscard, long rxFifoFull, long rxError,
+ long rxUnknownProto, long rxMiss,
+ long txOctets, long txIp4, long txIp6, long txUni, long txMulti,
+ long txBcast, long txDiscard, long txFifoFull, long txError,
+ long txUnknownProto, long txMiss)
+ {
+ this.rxOctets = rxOctets;
+ this.rxIp4 = rxIp4;
+ this.rxIp6 = rxIp6;
+ this.rxUnicast = rxUni;
+ this.rxMulticast = rxMulti;
+ this.rxBroadcast = rxBcast;
+ this.rxDiscard = rxDiscard;
+ this.rxFifoFull = rxFifoFull;
+ this.rxError = rxError;
+ this.rxUnknownProto = rxUnknownProto;
+ this.rxMiss = rxMiss;
+
+ this.txOctets = txOctets;
+ this.txIp4 = txIp4;
+ this.txIp6 = txIp6;
+ this.txUnicast = txUni;
+ this.txMulticast = txMulti;
+ this.txBroadcast = txBcast;
+ this.txDiscard = txDiscard;
+ this.txFifoFull = txFifoFull;
+ this.txError = txError;
+ this.txUnknownProto = txUnknownProto;
+ this.txMiss = txMiss;
+ }
+}
+
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceDetails.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
new file mode 100644
index 00000000000..742dd25ad1c
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppInterfaceDetails {
+ public final int ifIndex;
+ public final String interfaceName;
+ public final int supIfIndex;
+ // FIXME: this is dangerous
+ public final byte[] physAddr;
+ public final byte adminUp;
+ public final byte linkUp;
+ public final byte linkDuplex;
+ public final byte linkSpeed;
+ public final int subId;
+ public final byte subDot1ad;
+ public final byte subNumberOfTags;
+ public final int subOuterVlanId;
+ public final int subInnerVlanId;
+ public final byte subExactMatch;
+ public final byte subDefault;
+ public final byte subOuterVlanIdAny;
+ public final byte subInnerVlanIdAny;
+ public final int vtrOp;
+ public final int vtrPushDot1q;
+ public final int vtrTag1;
+ public final int vtrTag2;
+ public final int linkMtu;
+
+ public vppInterfaceDetails(int ifIndex, String interfaceName, int supIfIndex, byte[] physAddr, byte adminUp,
+ byte linkUp, byte linkDuplex, byte linkSpeed, int subId, byte subDot1ad, byte subNumberOfTags,
+ int subOuterVlanId, int subInnerVlanId, byte subExactMatch, byte subDefault, byte subOuterVlanIdAny,
+ byte subInnerVlanIdAny, int vtrOp, int vtrPushDot1q, int vtrTag1, int vtrTag2, int linkMtu)
+ {
+ this.ifIndex = ifIndex;
+ this.interfaceName = interfaceName;
+ this.supIfIndex = supIfIndex;
+ this.physAddr = physAddr;
+ this.adminUp = adminUp;
+ this.linkUp = linkUp;
+ this.linkDuplex = linkDuplex;
+ this.linkSpeed = linkSpeed;
+ this.subId = subId;
+ this.subDot1ad = subDot1ad;
+ this.subNumberOfTags = subNumberOfTags;
+ this.subOuterVlanId = subOuterVlanId;
+ this.subInnerVlanId = subInnerVlanId;
+ this.subExactMatch = subExactMatch;
+ this.subDefault = subDefault;
+ this.subOuterVlanIdAny = subOuterVlanIdAny;
+ this.subInnerVlanIdAny = subInnerVlanIdAny;
+ this.vtrOp = vtrOp;
+ this.vtrPushDot1q = vtrPushDot1q;
+ this.vtrTag1 = vtrTag1;
+ this.vtrTag2 = vtrTag2;
+ this.linkMtu = linkMtu;
+ }
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppL2Fib.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppL2Fib.java
new file mode 100644
index 00000000000..b38d801e9e0
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppL2Fib.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppL2Fib {
+ // FIXME: this is dangerous
+ public final byte[] physAddress;
+ public final boolean staticConfig;
+ public final String outgoingInterface;
+ public final boolean filter;
+ public final boolean bridgedVirtualInterface;
+
+ public vppL2Fib(byte[] physAddress, boolean staticConfig,
+ String outgoingInterface, boolean filter,
+ boolean bridgedVirtualInterface) {
+ this.physAddress = physAddress;
+ this.staticConfig = staticConfig;
+ this.outgoingInterface = outgoingInterface;
+ this.filter = filter;
+ this.bridgedVirtualInterface = bridgedVirtualInterface;
+ }
+}
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppVersion.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppVersion.java
new file mode 100644
index 00000000000..6408dee2754
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppVersion.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppVersion {
+ public final String programName;
+ public final String buildDirectory;
+ public final String gitBranch;
+ public final String buildDate;
+
+ public vppVersion(String progName, String buildDir, String gitBranch, String buildDate) {
+ this.programName = progName;
+ this.buildDirectory = buildDir;
+ this.gitBranch = gitBranch;
+ this.buildDate = buildDate;
+ }
+}
+
diff --git a/vpp-api/java/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java b/vpp-api/java/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
new file mode 100644
index 00000000000..dd81e98cf27
--- /dev/null
+++ b/vpp-api/java/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2015 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openvpp.vppjapi;
+
+public final class vppVxlanTunnelDetails {
+ public final int srcAddress;
+ public final int dstAddress;
+ public final int encapVrfId;
+ public final int vni;
+ public final int decapNextIndex;
+
+ public vppVxlanTunnelDetails(int srcAddress, int dstAddress,
+ int encapVrfId, int vni, int decapNextIndex) {
+ this.srcAddress = srcAddress;
+ this.dstAddress = dstAddress;
+ this.encapVrfId = encapVrfId;
+ this.vni = vni;
+ this.decapNextIndex = decapNextIndex;
+ }
+}