libspf2 1.2.11
Macros | Functions
spf_interpret.c File Reference
#include "spf_sys_config.h"
#include <ctype.h>
#include "spf.h"
#include "spf_dns.h"
#include "spf_internal.h"
#include "spf_dns_internal.h"
#include "spf_server.h"
Include dependency graph for spf_interpret.c:

Go to the source code of this file.

Macros

#define DONE(result, reason, err)   SPF_i_done(spf_response, result, reason, err)
 
#define DONE_TEMPERR(err)   DONE(SPF_RESULT_TEMPERROR,SPF_REASON_NONE,err)
 
#define DONE_PERMERR(err)   DONE(SPF_RESULT_PERMERROR,SPF_REASON_NONE,err)
 
#define DONE_MECH(result)   DONE(result, SPF_REASON_MECH, SPF_E_SUCCESS)
 
#define INET_NTOP(af, src, dst, cnt)
 
#define SPF_ADD_DNS_MECH()   do { spf_response->num_dns_mech++; } while(0)
 
#define SPF_MAYBE_SKIP_CIDR()
 
#define SPF_GET_LOOKUP_DATA()
 
#define SPF_FREE_LOOKUP_DATA()    do { if (buf != NULL) { free(buf); buf = NULL; } } while(0)
 

Functions

SPF_errcode_t SPF_i_done (SPF_response_t *spf_response, SPF_result_t result, SPF_reason_t reason, SPF_errcode_t err)
 
SPF_errcode_t SPF_record_interpret (SPF_record_t *spf_record, SPF_request_t *spf_request, SPF_response_t *spf_response, int depth)
 

Macro Definition Documentation

◆ DONE

#define DONE (   result,
  reason,
  err 
)    SPF_i_done(spf_response, result, reason, err)

Definition at line 374 of file spf_interpret.c.

◆ DONE_MECH

#define DONE_MECH (   result)    DONE(result, SPF_REASON_MECH, SPF_E_SUCCESS)

Definition at line 377 of file spf_interpret.c.

◆ DONE_PERMERR

#define DONE_PERMERR (   err)    DONE(SPF_RESULT_PERMERROR,SPF_REASON_NONE,err)

Definition at line 376 of file spf_interpret.c.

◆ DONE_TEMPERR

#define DONE_TEMPERR (   err)    DONE(SPF_RESULT_TEMPERROR,SPF_REASON_NONE,err)

Definition at line 375 of file spf_interpret.c.

◆ INET_NTOP

#define INET_NTOP (   af,
  src,
  dst,
  cnt 
)
Value:
do { \
if (inet_ntop(af, src, dst, cnt) == NULL) \
snprintf(dst, cnt, "ip-error" ); \
} while(0)
#define NULL

Definition at line 418 of file spf_interpret.c.

◆ SPF_ADD_DNS_MECH

#define SPF_ADD_DNS_MECH ( )    do { spf_response->num_dns_mech++; } while(0)

◆ SPF_FREE_LOOKUP_DATA

#define SPF_FREE_LOOKUP_DATA ( )     do { if (buf != NULL) { free(buf); buf = NULL; } } while(0)

◆ SPF_GET_LOOKUP_DATA

#define SPF_GET_LOOKUP_DATA ( )
Value:
do { \
if ( data == data_end ) \
lookup = spf_request->cur_dom; \
else { \
err = SPF_record_expand_data( spf_server, \
spf_request, spf_response, \
data, ((char *)data_end - (char *)data), \
&buf, &buf_len ); \
if (err == SPF_E_NO_MEMORY) { \
SPF_FREE_LOOKUP_DATA(); \
return DONE_TEMPERR(err); \
} \
if (err) { \
SPF_FREE_LOOKUP_DATA(); \
return DONE_PERMERR(err); \
} \
lookup = buf; \
} \
} while(0)
@ SPF_E_NO_MEMORY
SPF_errcode_t SPF_record_expand_data(SPF_server_t *spf_server, SPF_request_t *spf_request, SPF_response_t *spf_response, SPF_data_t *data, size_t data_len, char **bufp, size_t *buflenp)
Definition spf_expand.c:81
#define DONE_TEMPERR(err)
#define DONE_PERMERR(err)

◆ SPF_MAYBE_SKIP_CIDR

#define SPF_MAYBE_SKIP_CIDR ( )
Value:
do { \
if ( data < data_end && data->dc.parm_type == PARM_CIDR ) \
data = SPF_data_next( data ); \
} while(0)
#define PARM_CIDR
Definition spf_record.h:99

Function Documentation

◆ SPF_i_done()

SPF_errcode_t SPF_i_done ( SPF_response_t *  spf_response,
SPF_result_t  result,
SPF_reason_t  reason,
SPF_errcode_t  err 
)

This must be called with EITHER spf_response->spf_record_exp != NULL OR result in { SPF_RESULT_PASS SPF_RESULT_INVALID SPF_RESULT_TEMPERROR SPF_RESULT_PERMERROR } or the library will abort when it tries to generate an explanation.

Definition at line 388 of file spf_interpret.c.

References SPF_ASSERT_NOTNULL.

Referenced by SPF_request_query_fallback(), SPF_request_query_mailfrom(), and SPF_request_query_rcptto().

◆ SPF_record_interpret()

SPF_errcode_t SPF_record_interpret ( SPF_record_t *  spf_record,
SPF_request_t *  spf_request,
SPF_response_t *  spf_response,
int  depth 
)