19 #ifndef INC_SPF_INTERNAL
20 #define INC_SPF_INTERNAL
28 #define NULL ((void *)0)
31 #define array_elem(x) ((long int)(sizeof( x ) / sizeof( *x )))
38 #ifndef SPF_MAX_DNS_MECH
55 #define SPF_MAX_DNS_MECH 10
57 #ifndef SPF_MAX_DNS_PTR
62 #define SPF_MAX_DNS_PTR 10
64 #ifndef SPF_MAX_DNS_MX
69 #define SPF_MAX_DNS_MX 10
74 static inline size_t _align_sz(
size_t s)
76 static inline char * _align_ptr(
char *s)
79 static inline size_t _align_sz(
size_t s) {
return s; }
80 static inline char * _align_ptr(
char *s) {
return s; }
87 static inline size_t SPF_mech_data_len( SPF_mech_t * mech )
88 {
return (mech->mech_type ==
MECH_IP4)
89 ?
sizeof(
struct in_addr )
91 ? sizeof( struct in6_addr )
93 static inline SPF_mech_t *SPF_mech_next( SPF_mech_t * mech )
94 {
return (SPF_mech_t *)_align_ptr(
95 (
char *)mech +
sizeof(SPF_mech_t) + SPF_mech_data_len( mech )
97 static inline SPF_data_t *SPF_mech_data( SPF_mech_t *mech )
98 {
return (SPF_data_t *)( (
char *)mech +
sizeof(SPF_mech_t)); }
99 static inline SPF_data_t *SPF_mech_end_data( SPF_mech_t *mech )
100 {
return (SPF_data_t *)( (
char *)SPF_mech_data(mech) +
101 SPF_mech_data_len( mech ));}
102 static inline struct in_addr *SPF_mech_ip4_data( SPF_mech_t *mech )
103 {
return (
struct in_addr *)( (
char *)mech +
sizeof(SPF_mech_t)); }
104 static inline struct in6_addr *SPF_mech_ip6_data( SPF_mech_t *mech )
105 {
return (
struct in6_addr *)( (
char *)mech +
sizeof(SPF_mech_t)); }
107 static inline size_t SPF_data_len( SPF_data_t *data )
108 {
return sizeof(SPF_data_t) +
109 (data->ds.parm_type ==
PARM_STRING ? data->ds.len : 0); }
110 static inline SPF_data_t *SPF_data_next( SPF_data_t *data )
111 {
return (SPF_data_t *)_align_ptr(
112 (
char *)data + SPF_data_len(data)
114 static inline char *SPF_data_str( SPF_data_t *data )
115 {
return (
char *)data +
sizeof(SPF_data_t); }
117 static inline size_t SPF_mod_len( SPF_mod_t *mod )
118 {
return _align_sz(
sizeof(SPF_mod_t) + mod->name_len) + mod->data_len; }
119 static inline SPF_mod_t *SPF_mod_next( SPF_mod_t *mod )
120 {
return (SPF_mod_t *)_align_ptr(
121 (
char *)mod + SPF_mod_len(mod)
123 static inline char *SPF_mod_name( SPF_mod_t *mod )
124 {
return (
char *)mod +
sizeof(SPF_mod_t); }
125 static inline SPF_data_t *SPF_mod_data( SPF_mod_t *mod )
126 {
return (SPF_data_t *)_align_ptr(
127 (
char *)mod +
sizeof(SPF_mod_t) + mod->name_len
129 static inline SPF_data_t *SPF_mod_end_data( SPF_mod_t *mod )
130 {
return (SPF_data_t *)((
char *)SPF_mod_data(mod) + mod->data_len); }
132 static inline size_t SPF_macro_data_len( SPF_macro_t * mac )
133 {
return mac->macro_len; }
134 static inline SPF_data_t *SPF_macro_data( SPF_macro_t * mac )
135 {
return (SPF_data_t *)( (
char *)mac +
sizeof(SPF_macro_t)); }
138 char *
SPF_sanitize( SPF_server_t *spf_server,
char *str );
158 #define SPF_WRAP_FUNCTION(name, proto, args) \
159 SPF_errcode_t name proto { \
160 SPF_errcode_t err = name ## _real args; \
161 SPF_debug(#name " returns %d\n", err); \
164 SPF_errcode_t name ## _real proto