libspf2  1.2.11
spf_response.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of either:
4  *
5  * a) The GNU Lesser General Public License as published by the Free
6  * Software Foundation; either version 2.1, or (at your option) any
7  * later version,
8  *
9  * OR
10  *
11  * b) The two-clause BSD license.
12  *
13  * These licenses can be found with the distribution in the file LICENSES
14  */
15 
16 #ifndef INC_SPF_RESPONSE
17 #define INC_SPF_RESPONSE
18 
78 typedef
79 enum SPF_result_enum {
85 
90 
99 typedef
100 enum SPF_reason_enum {
101  SPF_REASON_NONE = 0
109 
118 typedef
119 enum SPF_errcode_t {
120  SPF_E_SUCCESS = 0
155 
156 typedef
157 struct SPF_error_struct
158 {
160  char *message;
161  char is_error;
162 } SPF_error_t;
163 
164 typedef struct SPF_response_struct SPF_response_t;
165 
166 #include "spf.h"
167 #include "spf_request.h"
168 
170  /* Structure variables */
171  SPF_request_t *spf_request;
172  SPF_record_t *spf_record_exp;
173 
174  /* The answer itself. */
178 
183  char *explanation;
184 
185  /* The errors */
187  unsigned short errors_size;
188  unsigned short errors_length;
189  unsigned short num_errors;
191  /* Stuff which lets us get there. */
193 };
194 
195 
196 SPF_response_t *SPF_response_new(SPF_request_t *spf_request);
197 void SPF_response_free(SPF_response_t *rp);
198 SPF_response_t *SPF_response_combine(SPF_response_t *main,
199  SPF_response_t *r2mx);
200 
201  /* Query functions for elements of the result */
202 SPF_result_t SPF_response_result(SPF_response_t *rp);
203 SPF_reason_t SPF_response_reason(SPF_response_t *rp);
204 SPF_errcode_t SPF_response_errcode(SPF_response_t *rp);
205 const char *SPF_response_get_received_spf(SPF_response_t *rp);
206 const char *SPF_response_get_received_spf_value(SPF_response_t*rp);
207 const char *SPF_response_get_header_comment(SPF_response_t *rp);
208 const char *SPF_response_get_smtp_comment(SPF_response_t *rp);
209 const char *SPF_response_get_explanation(SPF_response_t *rp);
210 
212 int SPF_response_messages(SPF_response_t *rp);
214 int SPF_response_errors(SPF_response_t *rp);
216 int SPF_response_warnings(SPF_response_t *rp);
218 SPF_error_t *SPF_response_message(SPF_response_t *rp, int idx);
219 
221 const char * SPF_error_message(SPF_error_t *err);
222 char SPF_error_errorp(SPF_error_t *err);
223 
226 SPF_errcode_t SPF_response_add_error_ptr(SPF_response_t *rp,
227  SPF_errcode_t code,
228  const char *text, const char *tptr,
229  const char *format, ...);
230 SPF_errcode_t SPF_response_add_error_idx(SPF_response_t *rp,
231  SPF_errcode_t code,
232  const char *text, int idx,
233  const char *format, ...);
234 SPF_errcode_t SPF_response_add_error(SPF_response_t *rp,
235  SPF_errcode_t code,
236  const char *format, ...);
237 SPF_errcode_t SPF_response_add_warn_ptr(SPF_response_t *rp,
238  SPF_errcode_t code,
239  const char *text, const char *tptr,
240  const char *format, ...);
241 SPF_errcode_t SPF_response_add_warn_idx(SPF_response_t *rp,
242  SPF_errcode_t code,
243  const char *text, int idx,
244  const char *format, ...);
245 SPF_errcode_t SPF_response_add_warn(SPF_response_t *rp,
246  SPF_errcode_t code,
247  const char *format, ...);
248 
249 #endif
SPF_response_new
SPF_response_t * SPF_response_new(SPF_request_t *spf_request)
Definition: spf_response.c:37
SPF_error_code
SPF_errcode_t SPF_error_code(SPF_error_t *err)
Definition: spf_response.c:314
SPF_RESULT_INVALID
@ SPF_RESULT_INVALID
Definition: spf_response.h:80
SPF_E_INVALID_IP6
@ SPF_E_INVALID_IP6
Definition: spf_response.h:140
SPF_E_RECURSIVE
@ SPF_E_RECURSIVE
Definition: spf_response.h:152
spf_request.h
SPF_REASON_NONE
@ SPF_REASON_NONE
Definition: spf_response.h:101
SPF_response_result
SPF_result_t SPF_response_result(SPF_response_t *rp)
Definition: spf_response.c:135
SPF_response_struct::reason
SPF_reason_t reason
Definition: spf_response.h:176
SPF_error_t
Definition: spf_response.h:158
SPF_response_get_header_comment
const char * SPF_response_get_header_comment(SPF_response_t *rp)
Definition: spf_response.c:165
SPF_E_MECH_AFTER_ALL
@ SPF_E_MECH_AFTER_ALL
Definition: spf_response.h:149
SPF_E_INVALID_VAR
@ SPF_E_INVALID_VAR
Definition: spf_response.h:132
SPF_E_INCLUDE_RETURNED_NONE
@ SPF_E_INCLUDE_RETURNED_NONE
Definition: spf_response.h:151
SPF_errcode_t
SPF_errcode_t
Definition: spf_response.h:119
SPF_E_MISSING_OPT
@ SPF_E_MISSING_OPT
Definition: spf_response.h:129
SPF_RESULT_PERMERROR
@ SPF_RESULT_PERMERROR
Definition: spf_response.h:88
SPF_E_INVALID_ESC
@ SPF_E_INVALID_ESC
Definition: spf_response.h:131
SPF_RESULT_SOFTFAIL
@ SPF_RESULT_SOFTFAIL
Definition: spf_response.h:84
SPF_response_struct::errors_size
unsigned short errors_size
Definition: spf_response.h:187
SPF_reason_t
SPF_reason_t
Definition: spf_response.h:100
SPF_response_struct::received_spf_value
char * received_spf_value
Definition: spf_response.h:180
SPF_response_struct::received_spf
char * received_spf
Definition: spf_response.h:179
SPF_response_message
SPF_error_t * SPF_response_message(SPF_response_t *rp, int idx)
Definition: spf_response.c:308
SPF_RESULT_NONE
@ SPF_RESULT_NONE
Definition: spf_response.h:86
spf.h
SPF_E_MOD_W_PREF
@ SPF_E_MOD_W_PREF
Definition: spf_response.h:124
SPF_E_INVALID_OPT
@ SPF_E_INVALID_OPT
Definition: spf_response.h:127
SPF_response_get_explanation
const char * SPF_response_get_explanation(SPF_response_t *rp)
Definition: spf_response.c:177
SPF_E_DNS_ERROR
@ SPF_E_DNS_ERROR
Definition: spf_response.h:146
SPF_error_t::code
SPF_errcode_t code
Definition: spf_response.h:159
SPF_response_messages
int SPF_response_messages(SPF_response_t *rp)
Definition: spf_response.c:290
SPF_REASON_FAILURE
@ SPF_REASON_FAILURE
Definition: spf_response.h:102
SPF_E_BAD_HOST_TLD
@ SPF_E_BAD_HOST_TLD
Definition: spf_response.h:148
SPF_E_INVALID_CHAR
@ SPF_E_INVALID_CHAR
Definition: spf_response.h:125
SPF_response_struct::explanation
char * explanation
Definition: spf_response.h:183
SPF_error_message
const char * SPF_error_message(SPF_error_t *err)
Definition: spf_response.c:320
SPF_E_SUCCESS
@ SPF_E_SUCCESS
Definition: spf_response.h:120
SPF_response_add_warn
SPF_errcode_t SPF_response_add_warn(SPF_response_t *rp, SPF_errcode_t code, const char *format,...)
Definition: spf_response.c:282
SPF_RESULT_NEUTRAL
@ SPF_RESULT_NEUTRAL
Definition: spf_response.h:81
SPF_response_struct::result
SPF_result_t result
Definition: spf_response.h:175
SPF_response_struct::num_errors
unsigned short num_errors
Definition: spf_response.h:189
SPF_response_free
void SPF_response_free(SPF_response_t *rp)
Definition: spf_response.c:53
SPF_result_t
SPF_result_t
Definition: spf_response.h:79
SPF_E_BAD_HOST_IP
@ SPF_E_BAD_HOST_IP
Definition: spf_response.h:147
SPF_REASON_LOCALHOST
@ SPF_REASON_LOCALHOST
Definition: spf_response.h:103
SPF_response_add_warn_idx
SPF_errcode_t SPF_response_add_warn_idx(SPF_response_t *rp, SPF_errcode_t code, const char *text, int idx, const char *format,...)
Definition: spf_response.c:273
SPF_E_UNINIT_VAR
@ SPF_E_UNINIT_VAR
Definition: spf_response.h:143
SPF_response_struct
Definition: spf_response.h:169
SPF_REASON_DEFAULT
@ SPF_REASON_DEFAULT
Definition: spf_response.h:106
SPF_E_BIG_MECH
@ SPF_E_BIG_MECH
Definition: spf_response.h:136
SPF_REASON_2MX
@ SPF_REASON_2MX
Definition: spf_response.h:107
SPF_REASON_LOCAL_POLICY
@ SPF_REASON_LOCAL_POLICY
Definition: spf_response.h:104
SPF_response_reason
SPF_reason_t SPF_response_reason(SPF_response_t *rp)
Definition: spf_response.c:141
SPF_RESULT_FAIL
@ SPF_RESULT_FAIL
Definition: spf_response.h:83
SPF_E_NO_MEMORY
@ SPF_E_NO_MEMORY
Definition: spf_response.h:121
SPF_response_combine
SPF_response_t * SPF_response_combine(SPF_response_t *main, SPF_response_t *r2mx)
Definition: spf_response.c:90
SPF_E_NOT_SPF
@ SPF_E_NOT_SPF
Definition: spf_response.h:122
SPF_E_INTERNAL_ERROR
@ SPF_E_INTERNAL_ERROR
Definition: spf_response.h:130
SPF_response_get_received_spf
const char * SPF_response_get_received_spf(SPF_response_t *rp)
Definition: spf_response.c:153
SPF_E_SYNTAX
@ SPF_E_SYNTAX
Definition: spf_response.h:123
SPF_response_errcode
SPF_errcode_t SPF_response_errcode(SPF_response_t *rp)
Definition: spf_response.c:147
SPF_response_get_smtp_comment
const char * SPF_response_get_smtp_comment(SPF_response_t *rp)
Definition: spf_response.c:171
main
int main(int argc, char *argv[])
Definition: spf_example.c:114
SPF_REASON_MECH
@ SPF_REASON_MECH
Definition: spf_response.h:105
SPF_E_MOD_NOT_FOUND
@ SPF_E_MOD_NOT_FOUND
Definition: spf_response.h:144
SPF_E_UNKNOWN_MECH
@ SPF_E_UNKNOWN_MECH
Definition: spf_response.h:126
SPF_response_errors
int SPF_response_errors(SPF_response_t *rp)
Definition: spf_response.c:296
SPF_response_struct::err
SPF_errcode_t err
Definition: spf_response.h:177
SPF_E_BIG_SUBDOM
@ SPF_E_BIG_SUBDOM
Definition: spf_response.h:133
SPF_response_struct::errors_length
unsigned short errors_length
Definition: spf_response.h:188
SPF_response_add_error_idx
SPF_errcode_t SPF_response_add_error_idx(SPF_response_t *rp, SPF_errcode_t code, const char *text, int idx, const char *format,...)
Definition: spf_response.c:247
SPF_RESULT_TEMPERROR
@ SPF_RESULT_TEMPERROR
Definition: spf_response.h:87
SPF_response_struct::errors
SPF_error_t * errors
Definition: spf_response.h:186
SPF_response_add_error_ptr
SPF_errcode_t SPF_response_add_error_ptr(SPF_response_t *rp, SPF_errcode_t code, const char *text, const char *tptr, const char *format,...)
Definition: spf_response.c:238
SPF_E_BIG_STRING
@ SPF_E_BIG_STRING
Definition: spf_response.h:135
SPF_error_t::is_error
char is_error
Definition: spf_response.h:161
SPF_E_MULTIPLE_RECORDS
@ SPF_E_MULTIPLE_RECORDS
Definition: spf_response.h:153
SPF_error_errorp
char SPF_error_errorp(SPF_error_t *err)
Definition: spf_response.c:326
SPF_E_BIG_DNS
@ SPF_E_BIG_DNS
Definition: spf_response.h:138
SPF_response_warnings
int SPF_response_warnings(SPF_response_t *rp)
Definition: spf_response.c:302
SPF_error_t::message
char * message
Definition: spf_response.h:160
SPF_E_INVALID_IP4
@ SPF_E_INVALID_IP4
Definition: spf_response.h:139
SPF_E_BIG_MOD
@ SPF_E_BIG_MOD
Definition: spf_response.h:137
SPF_response_get_received_spf_value
const char * SPF_response_get_received_spf_value(SPF_response_t *rp)
Definition: spf_response.c:159
SPF_response_struct::smtp_comment
char * smtp_comment
Definition: spf_response.h:182
SPF_E_NOT_CONFIG
@ SPF_E_NOT_CONFIG
Definition: spf_response.h:145
SPF_E_INVALID_DELIM
@ SPF_E_INVALID_DELIM
Definition: spf_response.h:134
SPF_response_add_warn_ptr
SPF_errcode_t SPF_response_add_warn_ptr(SPF_response_t *rp, SPF_errcode_t code, const char *text, const char *tptr, const char *format,...)
Definition: spf_response.c:264
SPF_response_struct::num_dns_mech
int num_dns_mech
Definition: spf_response.h:192
SPF_response_struct::spf_record_exp
SPF_record_t * spf_record_exp
Definition: spf_response.h:172
SPF_response_struct::spf_request
SPF_request_t * spf_request
Definition: spf_response.h:171
SPF_RESULT_PASS
@ SPF_RESULT_PASS
Definition: spf_response.h:82
SPF_E_INVALID_CIDR
@ SPF_E_INVALID_CIDR
Definition: spf_response.h:128
SPF_E_INVALID_PREFIX
@ SPF_E_INVALID_PREFIX
Definition: spf_response.h:141
SPF_E_RESULT_UNKNOWN
@ SPF_E_RESULT_UNKNOWN
Definition: spf_response.h:142
SPF_response_add_error
SPF_errcode_t SPF_response_add_error(SPF_response_t *rp, SPF_errcode_t code, const char *format,...)
Definition: spf_response.c:256
SPF_response_struct::header_comment
char * header_comment
Definition: spf_response.h:181