1/*
2 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
3 * Permission to use, copy, modify, and/or distribute this software for
4 * any purpose with or without fee is hereby granted, provided that the
5 * above copyright notice and this permission notice appear in all copies.
6 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
7 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
8 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
10 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
11 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
12 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
13 */
14
15
16#ifndef _ISISC_NAT_H_
17#define _ISISC_NAT_H_
18
19#ifdef __cplusplus
20extern "C" {
21#endif                          /* __cplusplus */
22
23#include "fal/fal_nat.h"
24
25    sw_error_t isisc_nat_init(a_uint32_t dev_id);
26
27    sw_error_t isisc_nat_reset(a_uint32_t dev_id);
28
29#ifdef IN_NAT
30#define ISISC_NAT_INIT(rv, dev_id) \
31    { \
32        rv = isisc_nat_init(dev_id); \
33        SW_RTN_ON_ERROR(rv); \
34    }
35
36#define ISISC_NAT_RESET(rv, dev_id) \
37    { \
38        rv = isisc_nat_reset(dev_id); \
39        SW_RTN_ON_ERROR(rv); \
40    }
41#else
42#define ISISC_NAT_INIT(rv, dev_id)
43#define ISISC_NAT_RESET(rv, dev_id)
44#endif
45
46#ifdef HSL_STANDALONG
47
48    HSL_LOCAL sw_error_t
49    isisc_napt_add(a_uint32_t dev_id, fal_napt_entry_t * napt_entry);
50
51    HSL_LOCAL sw_error_t
52    isisc_nat_pub_addr_add(a_uint32_t dev_id, fal_nat_pub_addr_t * entry);
53
54    HSL_LOCAL sw_error_t
55    isisc_napt_next(a_uint32_t dev_id, a_uint32_t next_mode,
56                   fal_napt_entry_t * napt_entry);
57
58    HSL_LOCAL sw_error_t
59    isisc_nat_prv_base_addr_set(a_uint32_t dev_id, fal_ip4_addr_t addr);
60
61    HSL_LOCAL sw_error_t
62    isisc_napt_del(a_uint32_t dev_id, a_uint32_t del_mode,
63                  fal_napt_entry_t * napt_entry);
64
65    HSL_LOCAL sw_error_t
66    isisc_nat_del(a_uint32_t dev_id, a_uint32_t del_mode,
67                 fal_nat_entry_t * nat_entry);
68
69    HSL_LOCAL sw_error_t
70    isisc_nat_pub_addr_del(a_uint32_t dev_id, a_uint32_t del_mode,
71                          fal_nat_pub_addr_t * entry);
72
73    HSL_LOCAL sw_error_t
74    isisc_nat_add(a_uint32_t dev_id, fal_nat_entry_t * nat_entry);
75
76    HSL_LOCAL sw_error_t
77    isisc_nat_get(a_uint32_t dev_id, a_uint32_t get_mode,
78                 fal_nat_entry_t * nat_entry);
79
80    HSL_LOCAL sw_error_t
81    isisc_nat_next(a_uint32_t dev_id, a_uint32_t next_mode,
82                  fal_nat_entry_t * nat_entry);
83
84    HSL_LOCAL sw_error_t
85    isisc_nat_counter_bind(a_uint32_t dev_id, a_uint32_t entry_id,
86                          a_uint32_t cnt_id, a_bool_t enable);
87
88    HSL_LOCAL sw_error_t
89    isisc_napt_get(a_uint32_t dev_id, a_uint32_t get_mode,
90                  fal_napt_entry_t * napt_entry);
91
92    HSL_LOCAL sw_error_t
93    isisc_napt_counter_bind(a_uint32_t dev_id, a_uint32_t entry_id,
94                           a_uint32_t cnt_id, a_bool_t enable);
95
96    HSL_LOCAL sw_error_t
97    isisc_nat_status_set(a_uint32_t dev_id, a_bool_t enable);
98
99    HSL_LOCAL sw_error_t
100    isisc_nat_status_get(a_uint32_t dev_id, a_bool_t * enable);
101
102    HSL_LOCAL sw_error_t
103    isisc_nat_hash_mode_set(a_uint32_t dev_id, a_uint32_t mode);
104
105    HSL_LOCAL sw_error_t
106    isisc_nat_hash_mode_get(a_uint32_t dev_id, a_uint32_t * mode);
107
108    HSL_LOCAL sw_error_t
109    isisc_napt_status_set(a_uint32_t dev_id, a_bool_t enable);
110
111    HSL_LOCAL sw_error_t
112    isisc_napt_status_get(a_uint32_t dev_id, a_bool_t * enable);
113
114    HSL_LOCAL sw_error_t
115    isisc_napt_mode_set(a_uint32_t dev_id, fal_napt_mode_t mode);
116
117    HSL_LOCAL sw_error_t
118    isisc_napt_mode_get(a_uint32_t dev_id, fal_napt_mode_t * mode);
119
120    HSL_LOCAL sw_error_t
121    isisc_nat_prv_base_addr_get(a_uint32_t dev_id, fal_ip4_addr_t * addr);
122
123    HSL_LOCAL sw_error_t
124    isisc_nat_prv_base_mask_set(a_uint32_t dev_id, fal_ip4_addr_t addr);
125
126    HSL_LOCAL sw_error_t
127    isisc_nat_prv_base_mask_get(a_uint32_t dev_id, fal_ip4_addr_t * addr);
128
129    HSL_LOCAL sw_error_t
130    isisc_nat_pub_addr_next(a_uint32_t dev_id, a_uint32_t next_mode,
131                           fal_nat_pub_addr_t * entry);
132
133    HSL_LOCAL sw_error_t
134    isisc_nat_unk_session_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd);
135
136    HSL_LOCAL sw_error_t
137    isisc_nat_unk_session_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd);
138
139    HSL_LOCAL sw_error_t
140    isisc_nat_psr_prv_base_addr_set(a_uint32_t dev_id, fal_ip4_addr_t addr);
141
142    HSL_LOCAL sw_error_t
143    isisc_nat_psr_prv_base_addr_get(a_uint32_t dev_id, fal_ip4_addr_t * addr);
144
145    HSL_LOCAL sw_error_t
146    isisc_nat_global_set(a_uint32_t dev_id, a_bool_t enable);
147
148#endif
149
150#ifdef __cplusplus
151}
152#endif                          /* __cplusplus */
153#endif                          /* _ISISC_NAT_H_ */
154