LCOV - code coverage report
Current view: top level - plugins/nat/lib - nat_syslog.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 58 63 92.1 %
Date: 2023-10-26 01:39:38 Functions: 7 8 87.5 %

          Line data    Source code
       1             : /*
       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:
       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             :  * @file
      17             :  * @brief NAT syslog logging
      18             :  */
      19             : #include <vnet/fib/fib_table.h>
      20             : #include <vnet/ip/ip.h>
      21             : #include <vnet/syslog/syslog.h>
      22             : 
      23             : #include <nat/lib/nat_syslog.h>
      24             : #include <nat/lib/inlines.h>
      25             : 
      26             : #include <nat/lib/nat_syslog_constants.h>
      27             : 
      28             : static inline void
      29       20971 : 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)
      33             : {
      34             :   syslog_msg_t syslog_msg;
      35             :   fib_table_t *fib;
      36             : 
      37       20971 :   if (!syslog_is_enabled ())
      38       20942 :     return;
      39             : 
      40          29 :   if (syslog_severity_filter_block (APMADD_APMDEL_SEVERITY))
      41           0 :     return;
      42             : 
      43          29 :   syslog_msg_init (&syslog_msg, NAT_FACILITY, APMADD_APMDEL_SEVERITY,
      44             :                    NAT_APPNAME, is_add ? APMADD_MSGID : APMDEL_MSGID);
      45             : 
      46          29 :   syslog_msg_sd_init (&syslog_msg, NAPMAP_SDID);
      47          29 :   syslog_msg_add_sd_param (&syslog_msg, SSUBIX_SDPARAM_NAME, "%d", ssubix);
      48          29 :   if (sv6enc)
      49             :     {
      50           3 :       syslog_msg_add_sd_param (&syslog_msg, SV6ENC_SDPARAM_NAME, "%U",
      51             :                                format_ip6_address, sv6enc);
      52             :     }
      53             :   else
      54             :     {
      55          26 :       fib = fib_table_get (sfibix, FIB_PROTOCOL_IP4);
      56          26 :       syslog_msg_add_sd_param (&syslog_msg, SVLAN_SDPARAM_NAME, "%d",
      57             :                                fib->ft_table_id);
      58             :     }
      59          29 :   syslog_msg_add_sd_param (&syslog_msg, IATYP_SDPARAM_NAME, IATYP_IPV4);
      60          29 :   syslog_msg_add_sd_param (&syslog_msg, ISADDR_SDPARAM_NAME, "%U",
      61             :                            format_ip4_address, isaddr);
      62          29 :   syslog_msg_add_sd_param (&syslog_msg, ISPORT_SDPARAM_NAME, "%d",
      63          29 :                            clib_net_to_host_u16 (isport));
      64          29 :   syslog_msg_add_sd_param (&syslog_msg, XATYP_SDPARAM_NAME, IATYP_IPV4);
      65          29 :   syslog_msg_add_sd_param (&syslog_msg, XSADDR_SDPARAM_NAME, "%U",
      66             :                            format_ip4_address, xsaddr);
      67          29 :   syslog_msg_add_sd_param (&syslog_msg, XSPORT_SDPARAM_NAME, "%d",
      68          29 :                            clib_net_to_host_u16 (xsport));
      69          29 :   syslog_msg_add_sd_param (&syslog_msg, PROTO_SDPARAM_NAME, "%d",
      70          29 :                            nat_proto_to_ip_proto (proto));
      71             : 
      72          29 :   syslog_msg_send (&syslog_msg);
      73             : }
      74             : 
      75             : void
      76       10485 : nat_syslog_nat44_apmadd (u32 ssubix, u32 sfibix, ip4_address_t * isaddr,
      77             :                          u16 isport, ip4_address_t * xsaddr, u16 xsport,
      78             :                          nat_protocol_t proto)
      79             : {
      80       10485 :   nat_syslog_nat44_apmap (ssubix, sfibix, isaddr, isport, xsaddr, xsport,
      81             :                           proto, 1, 0);
      82       10485 : }
      83             : 
      84             : void
      85       10483 : nat_syslog_nat44_apmdel (u32 ssubix, u32 sfibix, ip4_address_t * isaddr,
      86             :                          u16 isport, ip4_address_t * xsaddr, u16 xsport,
      87             :                          nat_protocol_t proto)
      88             : {
      89       10483 :   nat_syslog_nat44_apmap (ssubix, sfibix, isaddr, isport, xsaddr, xsport,
      90             :                           proto, 0, 0);
      91       10483 : }
      92             : 
      93             : void
      94           3 : nat_syslog_dslite_apmadd (u32 ssubix, ip6_address_t * sv6enc,
      95             :                           ip4_address_t * isaddr, u16 isport,
      96             :                           ip4_address_t * xsaddr, u16 xsport,
      97             :                           nat_protocol_t proto)
      98             : {
      99           3 :   nat_syslog_nat44_apmap (ssubix, 0, isaddr, isport, xsaddr, xsport,
     100             :                           proto, 1, sv6enc);
     101           3 : }
     102             : 
     103             : void
     104           0 : 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)
     108             : {
     109           0 :   nat_syslog_nat44_apmap (ssubix, 0, isaddr, isport, xsaddr, xsport,
     110             :                           proto, 0, sv6enc);
     111           0 : }
     112             : 
     113             : static inline void
     114          40 : 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)
     118             : {
     119             :   syslog_msg_t syslog_msg;
     120             :   fib_table_t *fib;
     121             : 
     122          40 :   if (!syslog_is_enabled ())
     123          36 :     return;
     124             : 
     125           4 :   if (syslog_severity_filter_block (SADD_SDEL_SEVERITY))
     126           0 :     return;
     127             : 
     128           4 :   fib = fib_table_get (sfibix, FIB_PROTOCOL_IP6);
     129             : 
     130           4 :   syslog_msg_init (&syslog_msg, NAT_FACILITY, SADD_SDEL_SEVERITY, NAT_APPNAME,
     131             :                    is_add ? SADD_MSGID : SDEL_MSGID);
     132             : 
     133           4 :   syslog_msg_sd_init (&syslog_msg, NSESS_SDID);
     134           4 :   syslog_msg_add_sd_param (&syslog_msg, SVLAN_SDPARAM_NAME, "%d",
     135             :                            fib->ft_table_id);
     136           4 :   syslog_msg_add_sd_param (&syslog_msg, IATYP_SDPARAM_NAME, IATYP_IPV6);
     137           4 :   syslog_msg_add_sd_param (&syslog_msg, ISADDR_SDPARAM_NAME, "%U",
     138             :                            format_ip6_address, isaddr);
     139           4 :   syslog_msg_add_sd_param (&syslog_msg, ISPORT_SDPARAM_NAME, "%d",
     140           4 :                            clib_net_to_host_u16 (isport));
     141           4 :   syslog_msg_add_sd_param (&syslog_msg, XATYP_SDPARAM_NAME, IATYP_IPV4);
     142           4 :   syslog_msg_add_sd_param (&syslog_msg, XSADDR_SDPARAM_NAME, "%U",
     143             :                            format_ip4_address, xsaddr);
     144           4 :   syslog_msg_add_sd_param (&syslog_msg, XSPORT_SDPARAM_NAME, "%d",
     145           4 :                            clib_net_to_host_u16 (xsport));
     146           4 :   syslog_msg_add_sd_param (&syslog_msg, PROTO_SDPARAM_NAME, "%d", proto);
     147           4 :   syslog_msg_add_sd_param (&syslog_msg, XDADDR_SDPARAM_NAME, "%U",
     148             :                            format_ip4_address, xdaddr);
     149           4 :   syslog_msg_add_sd_param (&syslog_msg, XDPORT_SDPARAM_NAME, "%d",
     150           4 :                            clib_net_to_host_u16 (xdport));
     151             : 
     152           4 :   syslog_msg_send (&syslog_msg);
     153             : }
     154             : 
     155             : void
     156          36 : 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)
     160             : {
     161          36 :   nat_syslog_nat64_sess (sfibix, isaddr, isport, xsaddr, xsport, xdaddr,
     162             :                          xdport, proto, 1);
     163          36 : }
     164             : 
     165             : void
     166           4 : 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)
     170             : {
     171           4 :   nat_syslog_nat64_sess (sfibix, isaddr, isport, xsaddr, xsport, xdaddr,
     172             :                          xdport, proto, 0);
     173           4 : }
     174             : 
     175             : /*
     176             :  * fd.io coding-style-patch-verification: ON
     177             :  *
     178             :  * Local Variables:
     179             :  * eval: (c-set-style "gnu")
     180             :  * End:
     181             :  */

Generated by: LCOV version 1.14