LCOV - code coverage report
Current view: top level - netinet - ip_ah.h (source / functions) Hit Total Coverage
Test: 6.4 Lines: 0 6 0.0 %
Date: 2018-10-19 03:25:38 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*      $OpenBSD: ip_ah.h,v 1.36 2017/11/08 16:29:20 visa Exp $ */
       2             : /*
       3             :  * The authors of this code are John Ioannidis (ji@tla.org),
       4             :  * Angelos D. Keromytis (kermit@csd.uch.gr) and
       5             :  * Niels Provos (provos@physnet.uni-hamburg.de).
       6             :  *
       7             :  * The original version of this code was written by John Ioannidis
       8             :  * for BSD/OS in Athens, Greece, in November 1995.
       9             :  *
      10             :  * Ported to OpenBSD and NetBSD, with additional transforms, in December 1996,
      11             :  * by Angelos D. Keromytis.
      12             :  *
      13             :  * Additional transforms and features in 1997 and 1998 by Angelos D. Keromytis
      14             :  * and Niels Provos.
      15             :  *
      16             :  * Additional features in 1999 by Angelos D. Keromytis.
      17             :  *
      18             :  * Copyright (C) 1995, 1996, 1997, 1998, 1999 John Ioannidis,
      19             :  * Angelos D. Keromytis and Niels Provos.
      20             :  * Copyright (c) 2001 Angelos D. Keromytis.
      21             :  *
      22             :  * Permission to use, copy, and modify this software with or without fee
      23             :  * is hereby granted, provided that this entire notice is included in
      24             :  * all copies of any software which is or includes a copy or
      25             :  * modification of this software.
      26             :  * You may use this code under the GNU public license if you so wish. Please
      27             :  * contribute changes back to the authors under this freer than GPL license
      28             :  * so that we may further the use of strong encryption without limitations to
      29             :  * all.
      30             :  *
      31             :  * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
      32             :  * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
      33             :  * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
      34             :  * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
      35             :  * PURPOSE.
      36             :  */
      37             : 
      38             : #ifndef _NETINET_IP_AH_H_
      39             : #define _NETINET_IP_AH_H_
      40             : 
      41             : struct ahstat {
      42             :         uint64_t        ahs_hdrops;     /* Packet shorter than header shows */
      43             :         uint64_t        ahs_nopf;       /* Protocol family not supported */
      44             :         uint64_t        ahs_notdb;
      45             :         uint64_t        ahs_badkcr;
      46             :         uint64_t        ahs_badauth;
      47             :         uint64_t        ahs_noxform;
      48             :         uint64_t        ahs_qfull;
      49             :         uint64_t        ahs_wrap;
      50             :         uint64_t        ahs_replay;
      51             :         uint64_t        ahs_badauthl;   /* Bad authenticator length */
      52             :         uint64_t        ahs_input;      /* Input AH packets */
      53             :         uint64_t        ahs_output;     /* Output AH packets */
      54             :         uint64_t        ahs_invalid;    /* Trying to use an invalid TDB */
      55             :         uint64_t        ahs_ibytes;     /* Input bytes */
      56             :         uint64_t        ahs_obytes;     /* Output bytes */
      57             :         uint64_t        ahs_toobig;     /* Packet got larger than
      58             :                                          * IP_MAXPACKET */
      59             :         uint64_t        ahs_pdrops;     /* Packet blocked due to policy */
      60             :         uint64_t        ahs_crypto;     /* Crypto processing failure */
      61             :         uint64_t        ahs_outfail;    /* Packet output failure */
      62             : };
      63             : 
      64             : struct ah {
      65             :     u_int8_t   ah_nh;
      66             :     u_int8_t   ah_hl;
      67             :     u_int16_t  ah_rv;
      68             :     u_int32_t  ah_spi;
      69             :     u_int32_t  ah_rpl;  /* We may not use this, if we're using old xforms */
      70             : };
      71             : 
      72             : /* Length of base AH header */
      73             : #define AH_FLENGTH              8
      74             : 
      75             : /*
      76             :  * Names for AH sysctl objects
      77             :  */
      78             : #define AHCTL_ENABLE    1               /* Enable AH processing */
      79             : #define AHCTL_STATS     2               /* AH stats */
      80             : #define AHCTL_MAXID     3
      81             : 
      82             : #define AHCTL_NAMES { \
      83             :         { 0, 0 }, \
      84             :         { "enable", CTLTYPE_INT }, \
      85             :         { "stats", CTLTYPE_STRUCT } \
      86             : }
      87             : 
      88             : #define AHCTL_VARS { \
      89             :         NULL, \
      90             :         &ah_enable, \
      91             :         NULL \
      92             : }
      93             : 
      94             : #ifdef _KERNEL
      95             : 
      96             : #include <sys/percpu.h>
      97             : 
      98             : enum ahstat_counters {
      99             :         ahs_hdrops,                     /* Packet shorter than header shows */
     100             :         ahs_nopf,                       /* Protocol family not supported */
     101             :         ahs_notdb,
     102             :         ahs_badkcr,
     103             :         ahs_badauth,
     104             :         ahs_noxform,
     105             :         ahs_qfull,
     106             :         ahs_wrap,
     107             :         ahs_replay,
     108             :         ahs_badauthl,                   /* Bad authenticator length */
     109             :         ahs_input,                      /* Input AH packets */
     110             :         ahs_output,                     /* Output AH packets */
     111             :         ahs_invalid,                    /* Trying to use an invalid TDB */
     112             :         ahs_ibytes,                     /* Input bytes */
     113             :         ahs_obytes,                     /* Output bytes */
     114             :         ahs_toobig,                     /* Packet got larger than
     115             :                                          * IP_MAXPACKET */
     116             :         ahs_pdrops,                     /* Packet blocked due to policy */
     117             :         ahs_crypto,                     /* Crypto processing failure */
     118             :         ahs_outfail,                    /* Packet output failure */
     119             : 
     120             :         ahs_ncounters
     121             : };
     122             : 
     123             : extern struct cpumem *ahcounters;
     124             : 
     125             : static inline void
     126           0 : ahstat_inc(enum ahstat_counters c)
     127             : {
     128           0 :         counters_inc(ahcounters, c);
     129           0 : }
     130             : 
     131             : static inline void
     132           0 : ahstat_add(enum ahstat_counters c, uint64_t v)
     133             : {
     134           0 :         counters_add(ahcounters, c, v);
     135           0 : }
     136             : 
     137             : extern int ah_enable;
     138             : 
     139             : #endif /* _KERNEL */
     140             : #endif /* _NETINET_IP_AH_H_ */

Generated by: LCOV version 1.13