/* Copyright 1999-2007 The Apache Software Foundation or its licensors, as * applicable. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Original Copyright (c) Netmask.IT!® 2006-2007 * * DNS Protocol module for Apache 2.x */ #ifndef RR_H #define RR_H #ifndef MOD_DNS_H #include "mod_dns.h" #endif #ifdef __cplusplus extern "C" { #endif #define DNS_RDATA_SERIALIZE(type) apr_status_t dns_rdata_##type##_serialize\ (void *rdata, char *data, int *dlen) #define DNS_RDATA_UNSERIALIZE(type) apr_status_t dns_rdata_##type##_unserialize\ (apr_pool_t *pool, const char *data, void **rdata) #define DNS_RDATA_PSERIALIZE(type) \ apr_status_t dns_rdata_##type##_pserialize(void *rdata, apr_pool_t *pool,\ char **data, int *dlen)\ {\ apr_status_t rv;\ *dlen = 0;\ if ((rv = dns_rdata_##type##_serialize(rdata, NULL, dlen)) != APR_SUCCESS)\ return rv;\ *data = apr_palloc(pool, *dlen);\ return dns_rdata_##type##_serialize(rdata, *data, dlen);\ } #define dns_init_rdata_const(type,var) \ var->serialize = dns_rdata_##type.serialize;\ var->pserialize = dns_rdata_##type.pserialize;\ var->unserialize = dns_rdata_##type.unserialize #define dns_init_rdata(type,var) \ var->serialize = type->serialize;\ var->pserialize = type->pserialize;\ var->unserialize = type->unserialize #define dns_null_rdata {NULL,NULL,NULL} #define DNS_RDATA_DECLARE(type) DNS_DECLARE_DATA extern const dns_rdata_t dns_rdata_##type #define DNS_RDATA_IMPLEMENT(type) DNS_DECLARE_DATA const dns_rdata_t dns_rdata_##type = {\ NULL,\ dns_rdata_##type##_serialize,\ dns_rdata_##type##_pserialize,\ dns_rdata_##type##_unserialize\ } DNS_RDATA_DECLARE(a); DNS_RDATA_DECLARE(cname); DNS_RDATA_DECLARE(mx); #ifdef __cplusplus } #endif #endif