Home | History | Annotate | Line # | Download | only in global
      1 /*	$NetBSD: mail_addr_find.h,v 1.2 2020/03/18 19:05:16 christos Exp $	*/
      2 
      3 #ifndef _MAIL_ADDR_FIND_H_INCLUDED_
      4 #define _MAIL_ADDR_FIND_H_INCLUDED_
      5 
      6 /*++
      7 /* NAME
      8 /*	mail_addr_find 3h
      9 /* SUMMARY
     10 /*	generic address-based lookup
     11 /* SYNOPSIS
     12 /*	#include <mail_addr_find.h>
     13 /* DESCRIPTION
     14 /* .nf
     15 
     16  /*
     17   * Global library.
     18   */
     19 #include <mail_addr_form.h>
     20 #include <maps.h>
     21 
     22  /*
     23   * External interface.
     24   */
     25 extern const char *mail_addr_find_opt(MAPS *, const char *, char **,
     26 				              int, int, int, int);
     27 
     28 #define MA_FIND_FULL	(1<<0)		/* localpart+ext@domain */
     29 #define MA_FIND_NOEXT	(1<<1)		/* localpart@domain */
     30 #define MA_FIND_LOCALPART_IF_LOCAL \
     31 				(1<<2)	/* localpart (maybe localpart+ext) */
     32 #define MA_FIND_LOCALPART_AT_IF_LOCAL \
     33 				(1<<3)	/* ditto, with @ at end */
     34 #define MA_FIND_AT_DOMAIN	(1<<4)	/* @domain */
     35 #define MA_FIND_DOMAIN	(1<<5)		/* domain */
     36 #define MA_FIND_PDMS	(1<<6)		/* parent matches subdomain */
     37 #define MA_FIND_PDDMDS	(1<<7)		/* parent matches dot-subdomain */
     38 #define MA_FIND_LOCALPART_AT	\
     39 				(1<<8)	/* localpart@ (maybe localpart+ext@) */
     40 
     41 #define MA_FIND_DEFAULT	(MA_FIND_FULL | MA_FIND_NOEXT \
     42 				| MA_FIND_LOCALPART_IF_LOCAL \
     43 				| MA_FIND_AT_DOMAIN)
     44 
     45  /* The least-overhead form. */
     46 #define mail_addr_find_int_to_ext(maps, address, extension) \
     47 	mail_addr_find_opt((maps), (address), (extension), \
     48 	    MA_FORM_INTERNAL, MA_FORM_EXTERNAL, \
     49 	    MA_FORM_EXTERNAL, MA_FIND_DEFAULT)
     50 
     51  /* The legacy forms. */
     52 #define MA_FIND_FORM_LEGACY \
     53 	MA_FORM_INTERNAL, MA_FORM_EXTERNAL_FIRST, \
     54 	    MA_FORM_EXTERNAL
     55 
     56 #define mail_addr_find_strategy(maps, address, extension, strategy) \
     57 	mail_addr_find_opt((maps), (address), (extension), \
     58 	    MA_FIND_FORM_LEGACY, (strategy))
     59 
     60 #define mail_addr_find(maps, address, extension) \
     61 	mail_addr_find_strategy((maps), (address), (extension), \
     62 	    MA_FIND_DEFAULT)
     63 
     64 #define mail_addr_find_to_internal(maps, address, extension) \
     65 	mail_addr_find_opt((maps), (address), (extension), \
     66 	    MA_FIND_FORM_LEGACY, MA_FIND_DEFAULT)
     67 
     68 /* LICENSE
     69 /* .ad
     70 /* .fi
     71 /*	The Secure Mailer license must be distributed with this software.
     72 /* AUTHOR(S)
     73 /*	Wietse Venema
     74 /*	IBM T.J. Watson Research
     75 /*	P.O. Box 704
     76 /*	Yorktown Heights, NY 10598, USA
     77 /*
     78 /*	Wietse Venema
     79 /*	Google, Inc.
     80 /*	111 8th Avenue
     81 /*	New York, NY 10011, USA
     82 /*--*/
     83 
     84 #endif
     85