aboutsummaryrefslogtreecommitdiffstats
path: root/src/vpp-api/vom/nat_binding_cmds.hpp
blob: ed9048a9da3ee4d6f769de0c7a11fe28b23cea99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#ifndef __VOM_NAT_BINDING_CMDS_H__
#define __VOM_NAT_BINDING_CMDS_H__

#include "vom/nat_binding.hpp"
#include "vom/rpc_cmd.hpp"
#include "vom/dump_cmd.hpp"

#include <vapi/nat.api.vapi.hpp>

namespace VOM {
namespace nat_binding_cmds {
/**
 * A functor class that binds L2 configuration to an interface
 */
class bind_44_input_cmd
    : public rpc_cmd<HW::item<bool>,
                     rc_t,
                     vapi::Nat44_interface_add_del_feature>
{
public:
    /**
     * Constructor
     */
    bind_44_input_cmd(HW::item<bool>& item,
                      const handle_t& itf,
                      const nat_binding::zone_t& zone);

    /**
     * Issue the command to VPP/HW
     */
    rc_t issue(connection& con);
    /**
     * convert to string format for debug purposes
     */
    std::string to_string() const;

    /**
     * Comparison operator - only used for UT
     */
    bool operator==(const bind_44_input_cmd& i) const;

private:
    /**
     * The interface to bind
     */
    const handle_t m_itf;

    /**
     * The zone the interface is in
     */
    const nat_binding::zone_t m_zone;
};

/**
 * A cmd class that Unbinds L2 configuration from an interface
 */
class unbind_44_input_cmd
    : public rpc_cmd<HW::item<bool>,
                     rc_t,
                     vapi::Nat44_interface_add_del_feature>
{
public:
    /**
     * Constructor
     */
    unbind_44_input_cmd(HW::item<bool>& item,
                        const handle_t& itf,
                        const nat_binding::zone_t& zone);

    /**
     * Issue the command to VPP/HW
     */
    rc_t issue(connection& con);
    /**
     * convert to string format for debug purposes
     */
    std::string to_string() const;

    /**
     * Comparison operator - only used for UT
     */
    bool operator==(const unbind_44_input_cmd& i) const;

private:
    /**
     * The interface to bind
     */
    const handle_t m_itf;

    /**
     * The zone the interface is in
     */
    const nat_binding::zone_t m_zone;
};

/**
 * A cmd class that Dumps all the nat_statics
 */
class dump_44_cmd : public dump_cmd<vapi::Nat44_interface_dump>
{
public:
    /**
     * Constructor
     */
    dump_44_cmd();
    dump_44_cmd(const dump_44_cmd& d);

    /**
     * Issue the command to VPP/HW
     */
    rc_t issue(connection& con);
    /**
     * convert to string format for debug purposes
     */
    std::string to_string() const;

    /**
     * Comparison operator - only used for UT
     */
    bool operator==(const dump_44_cmd& i) const;

private:
    /**
     * HW reutrn code
     */
    HW::item<bool> item;
};
};
};

#endif