Fix coverity warnings in VOM and VAPI
[vpp.git] / src / vpp-api / vom / acl_list_cmds.cpp
1 /*
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 #include "vom/acl_list.hpp"
17
18 namespace VOM {
19 namespace ACL {
20 template <>
21 rc_t
22 l3_list::update_cmd::issue(connection& con)
23 {
24   msg_t req(con.ctx(), m_rules.size(), std::ref(*this));
25   uint32_t ii = 0;
26
27   auto& payload = req.get_request().get_payload();
28   payload.acl_index = m_hw_item.data().value();
29   payload.count = m_rules.size();
30   memset(payload.tag, 0, sizeof(payload.tag));
31   memcpy(payload.tag, m_key.c_str(),
32          std::min(m_key.length(), sizeof(payload.tag)));
33
34   auto it = m_rules.cbegin();
35
36   while (it != m_rules.cend()) {
37     it->to_vpp(payload.r[ii]);
38     ++it;
39     ++ii;
40   }
41
42   VAPI_CALL(req.execute());
43
44   m_hw_item = wait();
45   complete();
46
47   return rc_t::OK;
48 }
49
50 template <>
51 rc_t
52 l3_list::delete_cmd::issue(connection& con)
53 {
54   msg_t req(con.ctx(), std::ref(*this));
55
56   auto& payload = req.get_request().get_payload();
57   payload.acl_index = m_hw_item.data().value();
58
59   VAPI_CALL(req.execute());
60
61   wait();
62   m_hw_item.set(rc_t::NOOP);
63
64   return rc_t::OK;
65 }
66
67 template <>
68 rc_t
69 l3_list::dump_cmd::issue(connection& con)
70 {
71   m_dump.reset(new msg_t(con.ctx(), std::ref(*this)));
72
73   auto& payload = m_dump->get_request().get_payload();
74   payload.acl_index = ~0;
75
76   VAPI_CALL(m_dump->execute());
77
78   wait();
79
80   return rc_t::OK;
81 }
82
83 template <>
84 rc_t
85 l2_list::update_cmd::issue(connection& con)
86 {
87   msg_t req(con.ctx(), m_rules.size(), std::ref(*this));
88   uint32_t ii = 0;
89
90   auto& payload = req.get_request().get_payload();
91   // payload.acl_index = m_hw_item.data().value();
92   payload.count = m_rules.size();
93   memset(payload.tag, 0, sizeof(payload.tag));
94   memcpy(payload.tag, m_key.c_str(),
95          std::min(m_key.length(), sizeof(payload.tag)));
96
97   auto it = m_rules.cbegin();
98
99   while (it != m_rules.cend()) {
100     it->to_vpp(payload.r[ii]);
101     ++it;
102     ++ii;
103   }
104
105   VAPI_CALL(req.execute());
106
107   m_hw_item = wait();
108
109   return rc_t::OK;
110 }
111
112 template <>
113 rc_t
114 l2_list::delete_cmd::issue(connection& con)
115 {
116   msg_t req(con.ctx(), std::ref(*this));
117
118   auto& payload = req.get_request().get_payload();
119   payload.acl_index = m_hw_item.data().value();
120
121   VAPI_CALL(req.execute());
122
123   wait();
124   m_hw_item.set(rc_t::NOOP);
125
126   return rc_t::OK;
127 }
128
129 template <>
130 rc_t
131 l2_list::dump_cmd::issue(connection& con)
132 {
133   m_dump.reset(new msg_t(con.ctx(), std::ref(*this)));
134
135   auto& payload = m_dump->get_request().get_payload();
136   payload.acl_index = ~0;
137
138   VAPI_CALL(m_dump->execute());
139
140   wait();
141
142   return rc_t::OK;
143 }
144 }
145 }
146
147 /*
148  * fd.io coding-style-patch-verification: ON
149  *
150  * Local Variables:
151  * eval: (c-set-style "mozilla")
152  * End:
153  */