blob: 7dacdafe20fa558af88c60be462927b50eaa27fd [file] [log] [blame]
Neale Ranns812ed392017-10-16 04:20:13 -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
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070016#include "vom/lldp_binding_cmds.hpp"
Neale Ranns812ed392017-10-16 04:20:13 -070017
18DEFINE_VAPI_MSG_IDS_LLDP_API_JSON;
19
20namespace VOM {
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070021namespace lldp_binding_cmds {
22
23bind_cmd::bind_cmd(HW::item<bool>& item,
24 const handle_t& itf,
25 const std::string& port_desc)
Neale Ranns812ed392017-10-16 04:20:13 -070026 : rpc_cmd(item)
27 , m_itf(itf)
28 , m_port_desc(port_desc)
29{
30}
31
32bool
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070033bind_cmd::operator==(const bind_cmd& other) const
Neale Ranns812ed392017-10-16 04:20:13 -070034{
35 return ((m_itf == other.m_itf) && (m_port_desc == other.m_port_desc));
36}
37
38rc_t
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070039bind_cmd::issue(connection& con)
Neale Ranns812ed392017-10-16 04:20:13 -070040{
41 msg_t req(con.ctx(), std::ref(*this));
42
43 auto& payload = req.get_request().get_payload();
44 payload.sw_if_index = m_itf.value();
45 payload.enable = 1;
46
47 memcpy(payload.port_desc, m_port_desc.c_str(),
48 std::min(sizeof(payload.port_desc), m_port_desc.length()));
49
50 VAPI_CALL(req.execute());
51
52 m_hw_item.set(wait());
53
54 return rc_t::OK;
55}
56
57std::string
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070058bind_cmd::to_string() const
Neale Ranns812ed392017-10-16 04:20:13 -070059{
60 std::ostringstream s;
61 s << "Lldp-bind: " << m_hw_item.to_string() << " itf:" << m_itf.to_string()
62 << " port_desc:" << m_port_desc;
63
64 return (s.str());
65}
66
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070067unbind_cmd::unbind_cmd(HW::item<bool>& item, const handle_t& itf)
Neale Ranns812ed392017-10-16 04:20:13 -070068 : rpc_cmd(item)
69 , m_itf(itf)
70{
71}
72
73bool
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070074unbind_cmd::operator==(const unbind_cmd& other) const
Neale Ranns812ed392017-10-16 04:20:13 -070075{
76 return (m_itf == other.m_itf);
77}
78
79rc_t
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070080unbind_cmd::issue(connection& con)
Neale Ranns812ed392017-10-16 04:20:13 -070081{
82 msg_t req(con.ctx(), std::ref(*this));
83
84 auto& payload = req.get_request().get_payload();
85 payload.sw_if_index = m_itf.value();
86 payload.enable = 0;
87
88 VAPI_CALL(req.execute());
89
90 wait();
91 m_hw_item.set(rc_t::NOOP);
92
93 return rc_t::OK;
94}
95
96std::string
Neale Ranns9ef1c0a2017-11-03 04:39:05 -070097unbind_cmd::to_string() const
Neale Ranns812ed392017-10-16 04:20:13 -070098{
99 std::ostringstream s;
100 s << "Lldp-unbind: " << m_hw_item.to_string() << " itf:" << m_itf.to_string();
101
102 return (s.str());
103}
Neale Ranns9ef1c0a2017-11-03 04:39:05 -0700104
105}; // namespace lldp_binding_cmds
106}; // namespace VOM
Neale Ranns812ed392017-10-16 04:20:13 -0700107
108/*
109 * fd.io coding-style-patch-verification: ON
110 *
111 * Local Variables:
112 * eval: (c-set-style "mozilla")
113 * End:
114 */