blob: f263b323e41c3809511f6f8699d5b45b79ade51f [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 */
Neale Ranns10e7a9f2017-11-14 08:40:43 -080037 create_cmd(HW::item<uint32_t>& item,
38 const bridge_domain::learning_mode_t& lmode);
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070039
40 /**
41 * Issue the command to VPP/HW
42 */
43 rc_t issue(connection& con);
44 /**
45 * convert to string format for debug purposes
46 */
47 std::string to_string() const;
48
49 /**
50 * Comparison operator - only used for UT
51 */
52 bool operator==(const create_cmd& i) const;
Neale Ranns10e7a9f2017-11-14 08:40:43 -080053
54private:
55 /**
56 * the learning mode for the bridge
57 */
58 bridge_domain::learning_mode_t m_learning_mode;
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070059};
60
61/**
62 * A cmd class that Delete an Bridge-Domain
63 */
64class delete_cmd
65 : public rpc_cmd<HW::item<uint32_t>, rc_t, vapi::Bridge_domain_add_del>
66{
67public:
68 /**
69 * Constructor
70 */
71 delete_cmd(HW::item<uint32_t>& item);
72
73 /**
74 * Issue the command to VPP/HW
75 */
76 rc_t issue(connection& con);
77 /**
78 * convert to string format for debug purposes
79 */
80 std::string to_string() const;
81
82 /**
83 * Comparison operator - only used for UT
84 */
85 bool operator==(const delete_cmd& i) const;
86};
87
88/**
89 * A cmd class that Dumps all the IPv4 L3 configs
90 */
91class dump_cmd : public VOM::dump_cmd<vapi::Bridge_domain_dump>
92{
93public:
94 /**
95 * Constructor
96 */
97 dump_cmd();
98 dump_cmd(const dump_cmd& d);
99
100 /**
101 * Issue the command to VPP/HW
102 */
103 rc_t issue(connection& con);
104 /**
105 * convert to string format for debug purposes
106 */
107 std::string to_string() const;
108
109 /**
110 * Comparison operator - only used for UT
111 */
112 bool operator==(const dump_cmd& i) const;
113
114private:
115 /**
116 * HW reutrn code
117 */
118 HW::item<bool> item;
119};
120};
121};
122
123/*
124 * fd.io coding-style-patch-verification: ON
125 *
126 * Local Variables:
127 * eval: (c-set-style "mozilla")
128 * End:
129 */
130
131#endif