blob: c6226fd339b0fa0111ae6ff0c48b904cdb041d43 [file] [log] [blame]
Neale Ranns9ef1c0a2017-11-03 04:39:05 -07001/*
2 * Copyright (c) 2017 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef __VOM_BRIDGE_DOMAIN_CMDS_H__
17#define __VOM_BRIDGE_DOMAIN_CMDS_H__
18
19#include "vom/bridge_domain.hpp"
20#include "vom/dump_cmd.hpp"
21#include "vom/rpc_cmd.hpp"
22
23#include <vapi/l2.api.vapi.hpp>
24
25namespace VOM {
26namespace bridge_domain_cmds {
27/**
28 * A command class that creates an Bridge-Domain
29 */
30class create_cmd
31 : public rpc_cmd<HW::item<uint32_t>, rc_t, vapi::Bridge_domain_add_del>
32{
33public:
34 /**
35 * Constructor
36 */
37 create_cmd(HW::item<uint32_t>& item);
38
39 /**
40 * Issue the command to VPP/HW
41 */
42 rc_t issue(connection& con);
43 /**
44 * convert to string format for debug purposes
45 */
46 std::string to_string() const;
47
48 /**
49 * Comparison operator - only used for UT
50 */
51 bool operator==(const create_cmd& i) const;
52};
53
54/**
55 * A cmd class that Delete an Bridge-Domain
56 */
57class delete_cmd
58 : public rpc_cmd<HW::item<uint32_t>, rc_t, vapi::Bridge_domain_add_del>
59{
60public:
61 /**
62 * Constructor
63 */
64 delete_cmd(HW::item<uint32_t>& item);
65
66 /**
67 * Issue the command to VPP/HW
68 */
69 rc_t issue(connection& con);
70 /**
71 * convert to string format for debug purposes
72 */
73 std::string to_string() const;
74
75 /**
76 * Comparison operator - only used for UT
77 */
78 bool operator==(const delete_cmd& i) const;
79};
80
81/**
82 * A cmd class that Dumps all the IPv4 L3 configs
83 */
84class dump_cmd : public VOM::dump_cmd<vapi::Bridge_domain_dump>
85{
86public:
87 /**
88 * Constructor
89 */
90 dump_cmd();
91 dump_cmd(const dump_cmd& d);
92
93 /**
94 * Issue the command to VPP/HW
95 */
96 rc_t issue(connection& con);
97 /**
98 * convert to string format for debug purposes
99 */
100 std::string to_string() const;
101
102 /**
103 * Comparison operator - only used for UT
104 */
105 bool operator==(const dump_cmd& i) const;
106
107private:
108 /**
109 * HW reutrn code
110 */
111 HW::item<bool> item;
112};
113};
114};
115
116/*
117 * fd.io coding-style-patch-verification: ON
118 *
119 * Local Variables:
120 * eval: (c-set-style "mozilla")
121 * End:
122 */
123
124#endif