1/* 2 * Portions Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") 3 * Portions Copyright (C) 2001 Internet Software Consortium. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES 11 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY 12 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 * 17 * Portions Copyright (C) 2001 Nominum, Inc. 18 * 19 * Permission to use, copy, modify, and/or distribute this software for any 20 * purpose with or without fee is hereby granted, provided that the above 21 * copyright notice and this permission notice appear in all copies. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL 24 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES 25 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY 26 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 27 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 28 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 29 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 30 */ 31 32/* $Id: cc.h,v 1.11 2007/08/28 07:20:43 tbox Exp $ */ 33 34#ifndef ISCCC_CC_H 35#define ISCCC_CC_H 1 36 37/*! \file isccc/cc.h */ 38 39#include <isc/lang.h> 40#include <isccc/types.h> 41 42ISC_LANG_BEGINDECLS 43 44/*% Maximum Datagram Package */ 45#define ISCCC_CC_MAXDGRAMPACKET 4096 46 47/*% Message Type String */ 48#define ISCCC_CCMSGTYPE_STRING 0x00 49/*% Message Type Binary Data */ 50#define ISCCC_CCMSGTYPE_BINARYDATA 0x01 51/*% Message Type Table */ 52#define ISCCC_CCMSGTYPE_TABLE 0x02 53/*% Message Type List */ 54#define ISCCC_CCMSGTYPE_LIST 0x03 55 56/*% Send to Wire */ 57isc_result_t 58isccc_cc_towire(isccc_sexpr_t *alist, isccc_region_t *target, 59 isccc_region_t *secret); 60 61/*% Get From Wire */ 62isc_result_t 63isccc_cc_fromwire(isccc_region_t *source, isccc_sexpr_t **alistp, 64 isccc_region_t *secret); 65 66/*% Create Message */ 67isc_result_t 68isccc_cc_createmessage(isc_uint32_t version, const char *from, const char *to, 69 isc_uint32_t serial, isccc_time_t now, 70 isccc_time_t expires, isccc_sexpr_t **alistp); 71 72/*% Create Acknowledgment */ 73isc_result_t 74isccc_cc_createack(isccc_sexpr_t *message, isc_boolean_t ok, 75 isccc_sexpr_t **ackp); 76 77/*% Is Ack? */ 78isc_boolean_t 79isccc_cc_isack(isccc_sexpr_t *message); 80 81/*% Is Reply? */ 82isc_boolean_t 83isccc_cc_isreply(isccc_sexpr_t *message); 84 85/*% Create Response */ 86isc_result_t 87isccc_cc_createresponse(isccc_sexpr_t *message, isccc_time_t now, 88 isccc_time_t expires, isccc_sexpr_t **alistp); 89 90/*% Define String */ 91isccc_sexpr_t * 92isccc_cc_definestring(isccc_sexpr_t *alist, const char *key, const char *str); 93 94/*% Define uint 32 */ 95isccc_sexpr_t * 96isccc_cc_defineuint32(isccc_sexpr_t *alist, const char *key, isc_uint32_t i); 97 98/*% Lookup String */ 99isc_result_t 100isccc_cc_lookupstring(isccc_sexpr_t *alist, const char *key, char **strp); 101 102/*% Lookup uint 32 */ 103isc_result_t 104isccc_cc_lookupuint32(isccc_sexpr_t *alist, const char *key, 105 isc_uint32_t *uintp); 106 107/*% Create Symbol Table */ 108isc_result_t 109isccc_cc_createsymtab(isccc_symtab_t **symtabp); 110 111/*% Clean up Symbol Table */ 112void 113isccc_cc_cleansymtab(isccc_symtab_t *symtab, isccc_time_t now); 114 115/*% Check for Duplicates */ 116isc_result_t 117isccc_cc_checkdup(isccc_symtab_t *symtab, isccc_sexpr_t *message, 118 isccc_time_t now); 119 120ISC_LANG_ENDDECLS 121 122#endif /* ISCCC_CC_H */ 123