/* * 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. */ import org.openvpp.vppjapi.*; public class demo extends vppApi { public static void main (String[] args) throws Exception { vppApi api = new vppApi (); String intlist; int [] contexts; int i, limit; int trips; int rv, errors, saved_error; long before, after; rv = api.clientConnect ("JavaTest"); if (rv == 0) System.out.printf ("Connected OK..."); else { System.out.printf ("clientConnect returned %d\n", rv); System.exit (1); } if (false) { intlist = api.getInterfaceList (""); System.out.printf ("Unfiltered interface list:\n%s", intlist); trips = 0; contexts = new int[6]; for (i = 0; i < 6; i++) { contexts[i] = api.swInterfaceSetFlags (5 + i /* sw_if_index */, (byte)1 /* admin_up */, (byte)1 /* link_up (ignored) */, (byte)0 /* deleted */); } /* Thread.sleep (1); */ errors = 0; saved_error = 0; for (i = 0; i < 6; i ++) { while (true) { rv = api.getRetval (contexts[i], 1 /* release */); if (rv != -77) break; Thread.sleep (1); trips++; } if (rv < 0) { saved_error = rv; errors++; } } if (errors == 0) System.out.printf ("intfcs up...\n"); else System.out.printf ("%d errors, last error %d...\n", errors, saved_error); } limit = 250000; saved_error = 0; errors = 0; contexts = new int [limit]; byte [] address = new byte [4]; byte [] zeros = new byte [4]; address[0] = (byte)192; address[1] = (byte)168; address[2] = (byte)2; address[3] = (byte)1; for (i = 0; i < 4; i++) zeros[i] = 0; System.out.printf ("start %d route ops ...", limit); before = System.currentTimeMillis(); for (i = 0; i < limit; i++) { contexts[i] = api.ipAddDelRoute (0 /* int nextHopSwIfIndex */, 0 /* int vrfId */, 0 /* int lookupInVrf */, 0 /* int resolveAttempts */, 0 /* int classifyTableIndex */, (byte)0 /* byte createVrfIfNeeded */, (byte)0 /* byte resolveIfNeeded */, (byte)1 /* byte isAdd */, (byte)1 /* byte isDrop */, (byte)0 /* byte isIpv6 */, (byte)0 /* byte isLocal */, (byte)0 /* byte isClassify */, (byte)0 /* byte isMultipath */, (byte)0 /* byte notLast */, (byte)0 /* byte nextHopWeight */, (byte)32 /* byte dstAddressLength */, address, zeros); address[3] += 1; if (address[3] == 0) { address[2] += 1; if (address[2] == 0) { address[1] += 1; { if (address[1] == 0) { address[0] += 1; } } } } } trips = 0; for (i = 0; i < limit; i++) { while (true) { rv = api.getRetval (contexts[i], 1 /* release */); if (rv != -77) break; Thread.sleep (1); trips++; } if (rv < 0) { saved_error = rv; errors++; } } after = System.currentTimeMillis(); if (errors == 0) System.out.printf ("done %d route ops (all OK)...\n", limit); else System.out.printf ("%d errors, last error %d...\n", errors, saved_error); System.out.printf ("result in %d trips\n", trips); System.out.printf ("%d routes in %d milliseconds, %d routes/msec\n", limit, after - before, limit / (after - before)); api.clientDisconnect(); System.out.printf ("Done...\n"); } }