2 * Copyright (c) 2020 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:
7 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * @brief NAT syslog logging
19 #include <vnet/fib/fib_table.h>
20 #include <vnet/ip/ip.h>
21 #include <vnet/syslog/syslog.h>
23 #include <nat/lib/nat_syslog.h>
24 #include <nat/lib/inlines.h>
26 #include <nat/lib/nat_syslog_constants.h>
29 nat_syslog_nat44_apmap (u32 ssubix, u32 sfibix, ip4_address_t * isaddr,
30 u16 isport, ip4_address_t * xsaddr, u16 xsport,
31 nat_protocol_t proto, u8 is_add,
32 ip6_address_t * sv6enc)
34 syslog_msg_t syslog_msg;
37 if (!syslog_is_enabled ())
40 if (syslog_severity_filter_block (APMADD_APMDEL_SEVERITY))
43 syslog_msg_init (&syslog_msg, NAT_FACILITY, APMADD_APMDEL_SEVERITY,
44 NAT_APPNAME, is_add ? APMADD_MSGID : APMDEL_MSGID);
46 syslog_msg_sd_init (&syslog_msg, NAPMAP_SDID);
47 syslog_msg_add_sd_param (&syslog_msg, SSUBIX_SDPARAM_NAME, "%d", ssubix);
50 syslog_msg_add_sd_param (&syslog_msg, SV6ENC_SDPARAM_NAME, "%U",
51 format_ip6_address, sv6enc);
55 fib = fib_table_get (sfibix, FIB_PROTOCOL_IP4);
56 syslog_msg_add_sd_param (&syslog_msg, SVLAN_SDPARAM_NAME, "%d",
59 syslog_msg_add_sd_param (&syslog_msg, IATYP_SDPARAM_NAME, IATYP_IPV4);
60 syslog_msg_add_sd_param (&syslog_msg, ISADDR_SDPARAM_NAME, "%U",
61 format_ip4_address, isaddr);
62 syslog_msg_add_sd_param (&syslog_msg, ISPORT_SDPARAM_NAME, "%d",
63 clib_net_to_host_u16 (isport));
64 syslog_msg_add_sd_param (&syslog_msg, XATYP_SDPARAM_NAME, IATYP_IPV4);
65 syslog_msg_add_sd_param (&syslog_msg, XSADDR_SDPARAM_NAME, "%U",
66 format_ip4_address, xsaddr);
67 syslog_msg_add_sd_param (&syslog_msg, XSPORT_SDPARAM_NAME, "%d",
68 clib_net_to_host_u16 (xsport));
69 syslog_msg_add_sd_param (&syslog_msg, PROTO_SDPARAM_NAME, "%d",
70 nat_proto_to_ip_proto (proto));
72 syslog_msg_send (&syslog_msg);
76 nat_syslog_nat44_apmadd (u32 ssubix, u32 sfibix, ip4_address_t * isaddr,
77 u16 isport, ip4_address_t * xsaddr, u16 xsport,
80 nat_syslog_nat44_apmap (ssubix, sfibix, isaddr, isport, xsaddr, xsport,
85 nat_syslog_nat44_apmdel (u32 ssubix, u32 sfibix, ip4_address_t * isaddr,
86 u16 isport, ip4_address_t * xsaddr, u16 xsport,
89 nat_syslog_nat44_apmap (ssubix, sfibix, isaddr, isport, xsaddr, xsport,
94 nat_syslog_dslite_apmadd (u32 ssubix, ip6_address_t * sv6enc,
95 ip4_address_t * isaddr, u16 isport,
96 ip4_address_t * xsaddr, u16 xsport,
99 nat_syslog_nat44_apmap (ssubix, 0, isaddr, isport, xsaddr, xsport,
104 nat_syslog_dslite_apmdel (u32 ssubix, ip6_address_t * sv6enc,
105 ip4_address_t * isaddr, u16 isport,
106 ip4_address_t * xsaddr, u16 xsport,
107 nat_protocol_t proto)
109 nat_syslog_nat44_apmap (ssubix, 0, isaddr, isport, xsaddr, xsport,
114 nat_syslog_nat64_sess (u32 sfibix, ip6_address_t * isaddr, u16 isport,
115 ip4_address_t * xsaddr, u16 xsport,
116 ip4_address_t * xdaddr, u16 xdport,
117 nat_protocol_t proto, u8 is_add)
119 syslog_msg_t syslog_msg;
122 if (!syslog_is_enabled ())
125 if (syslog_severity_filter_block (SADD_SDEL_SEVERITY))
128 fib = fib_table_get (sfibix, FIB_PROTOCOL_IP6);
130 syslog_msg_init (&syslog_msg, NAT_FACILITY, SADD_SDEL_SEVERITY, NAT_APPNAME,
131 is_add ? SADD_MSGID : SDEL_MSGID);
133 syslog_msg_sd_init (&syslog_msg, NSESS_SDID);
134 syslog_msg_add_sd_param (&syslog_msg, SVLAN_SDPARAM_NAME, "%d",
136 syslog_msg_add_sd_param (&syslog_msg, IATYP_SDPARAM_NAME, IATYP_IPV6);
137 syslog_msg_add_sd_param (&syslog_msg, ISADDR_SDPARAM_NAME, "%U",
138 format_ip6_address, isaddr);
139 syslog_msg_add_sd_param (&syslog_msg, ISPORT_SDPARAM_NAME, "%d",
140 clib_net_to_host_u16 (isport));
141 syslog_msg_add_sd_param (&syslog_msg, XATYP_SDPARAM_NAME, IATYP_IPV4);
142 syslog_msg_add_sd_param (&syslog_msg, XSADDR_SDPARAM_NAME, "%U",
143 format_ip4_address, xsaddr);
144 syslog_msg_add_sd_param (&syslog_msg, XSPORT_SDPARAM_NAME, "%d",
145 clib_net_to_host_u16 (xsport));
146 syslog_msg_add_sd_param (&syslog_msg, PROTO_SDPARAM_NAME, "%d", proto);
147 syslog_msg_add_sd_param (&syslog_msg, XDADDR_SDPARAM_NAME, "%U",
148 format_ip4_address, xdaddr);
149 syslog_msg_add_sd_param (&syslog_msg, XDPORT_SDPARAM_NAME, "%d",
150 clib_net_to_host_u16 (xdport));
152 syslog_msg_send (&syslog_msg);
156 nat_syslog_nat64_sadd (u32 sfibix, ip6_address_t * isaddr, u16 isport,
157 ip4_address_t * xsaddr, u16 xsport,
158 ip4_address_t * xdaddr, u16 xdport,
159 nat_protocol_t proto)
161 nat_syslog_nat64_sess (sfibix, isaddr, isport, xsaddr, xsport, xdaddr,
166 nat_syslog_nat64_sdel (u32 sfibix, ip6_address_t * isaddr, u16 isport,
167 ip4_address_t * xsaddr, u16 xsport,
168 ip4_address_t * xdaddr, u16 xdport,
169 nat_protocol_t proto)
171 nat_syslog_nat64_sess (sfibix, isaddr, isport, xsaddr, xsport, xdaddr,
176 * fd.io coding-style-patch-verification: ON
179 * eval: (c-set-style "gnu")