Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postfix/src/util/   (Postfix Mailserver Version 3.11©)  Datei vom 11.9.2024 mit Größe 2 kB image not shown  

Quelle  cidr_match.h

  Sprache: C
 

#ifndef _CIDR_MATCH_H_INCLUDED_
#define _CIDR_MATCH_H_INCLUDED_

/*++
/* NAME
/* dict_cidr 3h
/* SUMMARY
/* CIDR-style pattern matching
/* SYNOPSIS
/* #include <cidr_match.h>
/* DESCRIPTION
/* .nf

 /*
  * System library.
  */

#include <limits.h>   /* CHAR_BIT */

 /*
  * Utility library.
  */

#include <myaddrinfo.h>   /* MAI_V6ADDR_BYTES etc. */
#include <vstring.h>

 /*
  * External interface.
  * 
  * Address length is protocol dependent. Find out how large our address byte
  * strings should be.
  */

#ifdef HAS_IPV6
#define CIDR_MATCH_ABYTES MAI_V6ADDR_BYTES
#else
#define CIDR_MATCH_ABYTES MAI_V4ADDR_BYTES
#endif

 /*
  * Each parsed CIDR pattern can be member of a linked list.
  */

typedef struct CIDR_MATCH {
    int     op;    /* operation, match or control flow */
    int     match;   /* positive or negative match */
    unsigned char net_bytes[CIDR_MATCH_ABYTES]; /* network portion */
    unsigned char mask_bytes[CIDR_MATCH_ABYTES]; /* network mask */
    unsigned char addr_family;  /* AF_XXX */
    unsigned char addr_byte_count; /* typically, 4 or 16 */
    unsigned char addr_bit_count; /* optimization */
    unsigned char mask_shift;  /* optimization */
    struct CIDR_MATCH *next;  /* next entry */
    struct CIDR_MATCH *block_end; /* block terminator */
} CIDR_MATCH;

#define CIDR_MATCH_OP_MATCH 1 /* Match this pattern */
#define CIDR_MATCH_OP_IF 2 /* Increase if/endif nesting on match */
#define CIDR_MATCH_OP_ENDIF 3 /* Decrease if/endif nesting on match */

#define CIDR_MATCH_TRUE  1 /* Request positive match */
#define CIDR_MATCH_FALSE 0 /* Request negative match */

extern VSTRING *cidr_match_parse(CIDR_MATCH *, char *, int, VSTRING *);
extern VSTRING *cidr_match_parse_if(CIDR_MATCH *, char *, int, VSTRING *);
extern void cidr_match_endif(CIDR_MATCH *);

extern CIDR_MATCH *cidr_match_execute(CIDR_MATCH *, const char *);

/* LICENSE
/* .ad
/* .fi
/* The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/* Wietse Venema
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
/*
/* Wietse Venema
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
/*--*/


#endif

Messung V0.5 in Prozent
C=72 H=98 G=85

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.