spf_request.h

Go to the documentation of this file.
00001 /* 
00002  * This program is free software; you can redistribute it and/or modify
00003  * it under the terms of either:
00004  * 
00005  *   a) The GNU Lesser General Public License as published by the Free
00006  *      Software Foundation; either version 2.1, or (at your option) any
00007  *      later version,
00008  * 
00009  *   OR
00010  * 
00011  *   b) The two-clause BSD license.
00012  *
00013  * These licenses can be found with the distribution in the file LICENSES
00014  */
00015 
00016 #ifndef INC_SPF_REQUEST
00017 #define INC_SPF_REQUEST
00018 
00019 typedef struct SPF_request_struct SPF_request_t;
00020 
00021 #include "spf_server.h"
00022 
00023 struct SPF_request_struct {
00024         /* Structure variables */
00025         SPF_server_t    *spf_server;    /* The server. */
00026 
00027         /* Input client-end variables */
00028         int                              client_ver;    /* AF_INET/AF_INET6 */
00029         struct in_addr   ipv4;                  /* client (sending) MTA IP addr */
00030         struct in6_addr  ipv6;                  /* client (sending) MTA IP addr */
00031         char                    *env_from;              /* envelope-from/MAIL FROM: */
00032         char                    *helo_dom;              /* domain name from HELO cmd */
00033         char                    *rcpt_to_dom;   /* RCPT TO: domain for 2mx  */
00034 
00035 #if 0
00036         /* Input server-end variables */
00037         char                    *rec_dom;               /* receiving MTA domain name */
00038 #endif
00039 
00040         /* Per-request configuration variables */
00041         char                     use_local_policy;
00042         char                     use_helo;
00043 
00044         /* State/derived variables */
00045         char                    *env_from_lp;   /* Local part of env_from */
00046         char                    *env_from_dp;   /* Domain part of env_from */
00047         char                    *client_dom;    /* Verified domain from client IP */
00048 
00049         /* I'm not sure whether this should be in here. */
00050         const char              *cur_dom;               /* "current domain" of SPF spec */
00051 
00052         /* This is used for computing allocated space in SPF_expand. */
00053         size_t                   max_var_len;   /* Maximum strlen of above vars */
00054 };
00055 
00056 SPF_request_t   *SPF_request_new(SPF_server_t *spf_server);
00057 void                     SPF_request_free(SPF_request_t *sr);
00058 SPF_errcode_t    SPF_request_set_ipv4(SPF_request_t *sr,
00059                                                 struct in_addr addr);
00060 SPF_errcode_t    SPF_request_set_ipv6(SPF_request_t *sr,
00061                                                 struct in6_addr addr);
00062 SPF_errcode_t    SPF_request_set_ipv4_str(SPF_request_t *sr,
00063                                                 const char *astr);
00064 SPF_errcode_t    SPF_request_set_ipv6_str(SPF_request_t *sr,
00065                                                 const char *astr);
00066 SPF_errcode_t    SPF_request_set_helo_dom(SPF_request_t *sr,
00067                                                 const char *dom);
00068 int                              SPF_request_set_env_from(SPF_request_t *sr,
00069                                                 const char *from);
00070 const char              *SPF_request_get_rec_dom(SPF_request_t *sr);
00071 
00072 const char              *SPF_request_get_client_dom(SPF_request_t *sr);
00073 int                              SPF_request_is_loopback(SPF_request_t *sr);
00074 
00075 SPF_errcode_t    SPF_request_query_mailfrom(SPF_request_t *spf_request,
00076                                                 SPF_response_t **spf_responsep);
00077 SPF_errcode_t    SPF_request_query_rcptto(SPF_request_t *spf_request,
00078                                                 SPF_response_t **spf_responsep,
00079                                                 const char *rcpt_to);
00080 SPF_errcode_t    SPF_request_query_fallback(SPF_request_t *spf_request,
00081                                                 SPF_response_t **spf_responsep,
00082                                                 const char *record);
00083 
00084 
00085 /* In spf_get_exp.c */
00086 SPF_errcode_t    SPF_request_get_exp(SPF_server_t *spf_server,
00087                                                 SPF_request_t *spf_request,
00088                                                 SPF_response_t *spf_response,
00089                                                 SPF_record_t *spf_record,
00090                                                 char **bufp, size_t *buflenp);
00091 
00092 /* In spf_interpret.c - this is a kludge */
00093 
00094 SPF_errcode_t    SPF_i_done(SPF_response_t *spf_response,
00095                                                 SPF_result_t result, SPF_reason_t reason,
00096                                                 SPF_errcode_t err);
00097 
00098 
00099 #endif

Generated on Tue Nov 4 13:27:38 2008 for libspf2 by  doxygen 1.5.4