257 char ip4_buf[ INET_ADDRSTRLEN ];
258 char ip6_buf[ INET6_ADDRSTRLEN ];
263#define debug spf_record->spf_server->debug
283 + spf_record->mech_len * 4 + spf_record->mod_len * 4
291 p_end = *bufp + *buflenp;
294 SPF_debugf(
"stringify: Buffer length is %lu\n", (
unsigned long)*buflenp);
300 len = snprintf(p, p_end - p,
"v=spf%d", spf_record->version);
310 mech = spf_record->mech_first;
311 for (i = 0; i < spf_record->num_mech; i++) {
313 SPF_debugf(
"stringify: Handling mechanism %d/%d at %p",
314 i, spf_record->num_mech, mech);
353 len = snprintf( p, p_end - p,
"a" );
357 len = snprintf( p, p_end - p,
"mx" );
361 len = snprintf( p, p_end - p,
"ptr" );
365 len = snprintf( p, p_end - p,
"include" );
369 p_err = inet_ntop( AF_INET, SPF_mech_ip4_data( mech ),
370 ip4_buf,
sizeof( ip4_buf ) );
374 len = snprintf( p, p_end - p,
"ip4:%s/%d",
377 len = snprintf( p, p_end - p,
"ip4:%s", ip4_buf );
381 p_err = inet_ntop( AF_INET6, SPF_mech_ip6_data( mech ),
382 ip6_buf,
sizeof( ip6_buf ) );
386 len = snprintf( p, p_end - p,
"ip6:%s/%d",
389 len = snprintf( p, p_end - p,
"ip6:%s", ip6_buf );
393 len = snprintf( p, p_end - p,
"exists" );
397 len = snprintf( p, p_end - p,
"all" );
401 len = snprintf( p, p_end - p,
"redirect" );
412 SPF_debugf(
"stringify: Buffer so far is %s", p);
416 data = SPF_mech_data( mech );
417 data_end = SPF_mech_end_data( mech );
419 if (SPF_mech_data_len(mech) > 0
423 || SPF_data_next( data ) < data_end)
429 err = SPF_record_stringify_data(
438 mech = SPF_mech_next( mech );
446 mod = spf_record->mod_first;
447 for( i = 0; i < spf_record->num_mod; i++ )
450 SPF_debugf(
"stringify: Handling modifier %d/%d at %p",
451 i, spf_record->num_mod, mod);
455 len = snprintf( p, p_end - p,
"%.*s=",
456 mod->
name_len, SPF_mod_name( mod ) );
460 data = SPF_mod_data( mod );
461 data_end = SPF_mod_end_data( mod );
463 err = SPF_record_stringify_data(
472 mod = SPF_mod_next( mod );