ACL-plugin add "replace" semantics for adding a new MacIP acl
[vpp.git] / src / vpp-api / java / jvpp-acl / io / fd / vpp / jvpp / acl / examples / AclTestRequests.java
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package io.fd.vpp.jvpp.acl.examples;
18
19 import static io.fd.vpp.jvpp.acl.examples.AclTestData.createAclRules;
20 import static io.fd.vpp.jvpp.acl.examples.AclTestData.createMacipRules;
21
22 import io.fd.vpp.jvpp.VppInvocationException;
23 import io.fd.vpp.jvpp.acl.dto.AclAddReplace;
24 import io.fd.vpp.jvpp.acl.dto.AclAddReplaceReply;
25 import io.fd.vpp.jvpp.acl.dto.AclDel;
26 import io.fd.vpp.jvpp.acl.dto.AclDelReply;
27 import io.fd.vpp.jvpp.acl.dto.AclDetailsReplyDump;
28 import io.fd.vpp.jvpp.acl.dto.AclDump;
29 import io.fd.vpp.jvpp.acl.dto.AclInterfaceListDetailsReplyDump;
30 import io.fd.vpp.jvpp.acl.dto.AclInterfaceListDump;
31 import io.fd.vpp.jvpp.acl.dto.AclInterfaceSetAclList;
32 import io.fd.vpp.jvpp.acl.dto.AclInterfaceSetAclListReply;
33 import io.fd.vpp.jvpp.acl.dto.MacipAclAdd;
34 import io.fd.vpp.jvpp.acl.dto.MacipAclAddReply;
35 import io.fd.vpp.jvpp.acl.dto.MacipAclAddReplace;
36 import io.fd.vpp.jvpp.acl.dto.MacipAclAddReplaceReply;
37 import io.fd.vpp.jvpp.acl.dto.MacipAclDel;
38 import io.fd.vpp.jvpp.acl.dto.MacipAclDelReply;
39 import io.fd.vpp.jvpp.acl.dto.MacipAclDetailsReplyDump;
40 import io.fd.vpp.jvpp.acl.dto.MacipAclDump;
41 import io.fd.vpp.jvpp.acl.future.FutureJVppAclFacade;
42 import java.util.concurrent.ExecutionException;
43
44 class AclTestRequests {
45
46     static MacipAclDetailsReplyDump sendMacIpDumpRequest(final FutureJVppAclFacade jvpp)
47             throws ExecutionException, InterruptedException {
48         System.out.println("Sending MacipAclDump request...");
49         MacipAclDetailsReplyDump dump = jvpp.macipAclDump(new MacipAclDump()).toCompletableFuture().get();
50         System.out.println("MacipAclDump returned");
51         return dump;
52     }
53
54     static void sendMacIpAddRequest(final FutureJVppAclFacade jvpp) throws InterruptedException, ExecutionException {
55         final MacipAclAdd request = createMacIpAddRequest();
56         System.out.printf("Sending MacipAclAdd request %s%n", request.toString());
57         final MacipAclAddReply reply = jvpp.macipAclAdd(createMacIpAddRequest()).toCompletableFuture().get();
58         System.out.printf("MacipAclAdd send result = %s%n", reply);
59     }
60
61     static void sendMacIpAddReplaceRequest(final FutureJVppAclFacade jvpp) throws InterruptedException, ExecutionException {
62         final MacipAclAddReplace request = createMacIpAddReplaceRequest();
63         System.out.printf("Sending MacipAclAddReplace request %s%n", request.toString());
64         final MacipAclAddReplaceReply reply = jvpp.macipAclAddReplace(createMacIpAddReplaceRequest()).toCompletableFuture().get();
65         System.out.printf("MacipAclAddReplace send result = %s%n", reply);
66     }
67
68     static void sendMacIpDelRequest(final FutureJVppAclFacade jvpp) throws InterruptedException, ExecutionException {
69         final MacipAclDel request = new MacipAclDel();
70         request.aclIndex = 0;
71         System.out.printf("Sending MacipAclDel request %s%n", request.toString());
72         final MacipAclDelReply reply = jvpp.macipAclDel(request).toCompletableFuture().get();
73         System.out.printf("MacipAclDel send result = %s%n", reply);
74     }
75
76     static void sendAclAddRequest(final FutureJVppAclFacade jvpp) throws InterruptedException, ExecutionException {
77         final AclAddReplace request = createAclAddRequest();
78         System.out.printf("Sending AclAddReplace request %s%n", request.toString());
79         final AclAddReplaceReply reply = jvpp.aclAddReplace(request).toCompletableFuture().get();
80         System.out.printf("AclAddReplace send result = %s%n", reply);
81     }
82
83     static AclDetailsReplyDump sendAclDumpRequest(final FutureJVppAclFacade jvpp)
84             throws InterruptedException, VppInvocationException, ExecutionException {
85         System.out.println("Sending AclDump request...");
86         final AclDetailsReplyDump dump = jvpp.aclDump(new AclDump()).toCompletableFuture().get();
87         System.out.printf("AclDump send result = %s%n", dump);
88         return dump;
89     }
90
91     static void sendAclDelRequest(final FutureJVppAclFacade jvpp) throws InterruptedException, ExecutionException {
92         final AclDel request = new AclDel();
93         request.aclIndex = 0;
94         System.out.printf("Sending AclDel request %s%n", request.toString());
95         final AclDelReply reply = jvpp.aclDel(request).toCompletableFuture().get();
96         System.out.printf("AclDel send result = %s%n", reply);
97     }
98
99     static AclInterfaceListDetailsReplyDump sendAclInterfaceListDumpRequest(final FutureJVppAclFacade jvpp)
100             throws InterruptedException, ExecutionException {
101         final AclInterfaceListDump request = new AclInterfaceListDump();
102         request.swIfIndex = 0;
103         System.out.printf("Sending AclInterfaceListDump request %s%n", request.toString());
104         final AclInterfaceListDetailsReplyDump dump = jvpp.aclInterfaceListDump(request).toCompletableFuture().get();
105         System.out.printf("AclInterfaceListDump send result = %s%n", dump);
106         return dump;
107     }
108
109     static void sendAclInterfaceSetAclList(final FutureJVppAclFacade jvpp)
110             throws InterruptedException, ExecutionException {
111         final AclInterfaceSetAclList request = new AclInterfaceSetAclList();
112         request.count = 1;
113         request.acls = new int[]{1};
114         request.swIfIndex = 0;
115         request.nInput = 0;
116         System.out.printf("Sending AclInterfaceSetAclList request %s%n", request.toString());
117         final AclInterfaceSetAclListReply reply = jvpp.aclInterfaceSetAclList(request).toCompletableFuture().get();
118         System.out.printf("AclInterfaceSetAclList send result = %s%n", reply);
119     }
120
121     static void sendAclInterfaceDeleteList(final FutureJVppAclFacade jvpp)
122             throws InterruptedException, ExecutionException {
123         // uses same api but sets list to empty
124         final AclInterfaceSetAclList request = new AclInterfaceSetAclList();
125         request.count = 0;
126         request.acls = new int[]{};
127         request.swIfIndex = 0;
128         request.nInput = 0;
129         System.out.printf("Sending AclInterfaceSetAclList(Delete) request %s%n", request.toString());
130         final AclInterfaceSetAclListReply reply = jvpp.aclInterfaceSetAclList(request).toCompletableFuture().get();
131         System.out.printf("AclInterfaceSetAclList(Delete) send result = %s%n", reply);
132     }
133
134     private static MacipAclAdd createMacIpAddRequest() {
135         MacipAclAdd request = new MacipAclAdd();
136
137         request.count = 2;
138         request.r = createMacipRules();
139         return request;
140     }
141
142     private static MacipAclAddReplace createMacIpAddReplaceRequest() {
143         MacipAclAddReplace request = new MacipAclAddReplace();
144
145         request.count = 2;
146         request.aclIndex = 0;
147         request.r = createMacipRules();
148         return request;
149     }
150
151     private static AclAddReplace createAclAddRequest() {
152         AclAddReplace request = new AclAddReplace();
153
154         request.aclIndex = -1;// to define new one
155         request.count = 2;
156         request.r = createAclRules();
157         return request;
158     }
159 }