VOM: support for pipes
[vpp.git] / extras / vom / vom / interface_ip6_nd_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/interface_ip6_nd.hpp"
17
18 #include <vapi/vpe.api.vapi.hpp>
19
20 namespace VOM {
21 template <>
22 rc_t
23 ip6nd_ra_config::config_cmd::issue(connection& con)
24 {
25   msg_t req(con.ctx(), std::ref(*this));
26
27   auto& payload = req.get_request().get_payload();
28   payload.sw_if_index = m_itf.value();
29   m_cls.to_vpp(payload);
30   payload.is_no = 0;
31
32   VAPI_CALL(req.execute());
33
34   return (wait());
35 }
36
37 template <>
38 rc_t
39 ip6nd_ra_config::unconfig_cmd::issue(connection& con)
40 {
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   m_cls.to_vpp(payload);
46   payload.is_no = 1;
47
48   VAPI_CALL(req.execute());
49
50   wait();
51   m_hw_item.set(rc_t::NOOP);
52
53   return rc_t::OK;
54 }
55
56 template <>
57 rc_t
58 ip6nd_ra_prefix::config_cmd::issue(connection& con)
59 {
60   msg_t req(con.ctx(), std::ref(*this));
61
62   auto& payload = req.get_request().get_payload();
63   payload.sw_if_index = m_itf.value();
64   m_cls.to_vpp(payload);
65   payload.is_no = 0;
66
67   VAPI_CALL(req.execute());
68
69   return (wait());
70 }
71
72 template <>
73 rc_t
74 ip6nd_ra_prefix::unconfig_cmd::issue(connection& con)
75 {
76   msg_t req(con.ctx(), std::ref(*this));
77
78   auto& payload = req.get_request().get_payload();
79   payload.sw_if_index = m_itf.value();
80   m_cls.to_vpp(payload);
81   payload.is_no = 1;
82
83   VAPI_CALL(req.execute());
84
85   wait();
86   m_hw_item.set(rc_t::NOOP);
87
88   return rc_t::OK;
89 }
90 }
91
92 /*
93  * fd.io coding-style-patch-verification: ON
94  *
95  * Local Variables:
96  * eval: (c-set-style "mozilla")
97  * End:
98  */