| Server IP : 170.10.162.208 / Your IP : 216.73.216.181 Web Server : LiteSpeed System : Linux altar19.supremepanel19.com 4.18.0-553.69.1.lve.el8.x86_64 #1 SMP Wed Aug 13 19:53:59 UTC 2025 x86_64 User : deltahospital ( 1806) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/deltahospital/test.delta-hospital.com/ |
Upload File : |
symtype.h 0000644 00000002656 15051120272 0006433 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_SYMTYPE_H
#define ISCCC_SYMTYPE_H 1
/*! \file isccc/symtype.h */
#define ISCCC_SYMTYPE_ZONESTATS 0x0001
#define ISCCC_SYMTYPE_CCDUP 0x0002
#define ISCCC_SYMTYPE_TELLSERVICE 0x0003
#define ISCCC_SYMTYPE_TELLRESPONSE 0x0004
#endif /* ISCCC_SYMTYPE_H */
types.h 0000644 00000003325 15051120272 0006057 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_TYPES_H
#define ISCCC_TYPES_H 1
/*! \file isccc/types.h */
#include <inttypes.h>
#include <isc/result.h>
/*% isccc_time_t typedef */
typedef uint32_t isccc_time_t;
/*% isccc_sexpr_t typedef */
typedef struct isccc_sexpr isccc_sexpr_t;
/*% isccc_dottedpair_t typedef */
typedef struct isccc_dottedpair isccc_dottedpair_t;
/*% isccc_symtab_t typedef */
typedef struct isccc_symtab isccc_symtab_t;
/*% iscc region structure */
typedef struct isccc_region {
unsigned char * rstart;
unsigned char * rend;
} isccc_region_t;
#endif /* ISCCC_TYPES_H */
ccmsg.h 0000644 00000007100 15051120272 0006002 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_CCMSG_H
#define ISCCC_CCMSG_H 1
/*! \file isccc/ccmsg.h */
#include <inttypes.h>
#include <isc/buffer.h>
#include <isc/lang.h>
#include <isc/socket.h>
/*% ISCCC Message Structure */
typedef struct isccc_ccmsg {
/* private (don't touch!) */
unsigned int magic;
uint32_t size;
isc_buffer_t buffer;
unsigned int maxsize;
isc_mem_t *mctx;
isc_socket_t *sock;
isc_task_t *task;
isc_taskaction_t action;
void *arg;
isc_event_t event;
/* public (read-only) */
isc_result_t result;
isc_sockaddr_t address;
} isccc_ccmsg_t;
ISC_LANG_BEGINDECLS
void
isccc_ccmsg_init(isc_mem_t *mctx, isc_socket_t *sock, isccc_ccmsg_t *ccmsg);
/*%
* Associate a cc message state with a given memory context and
* TCP socket.
*
* Requires:
*
*\li "mctx" and "sock" be non-NULL and valid types.
*
*\li "sock" be a read/write TCP socket.
*
*\li "ccmsg" be non-NULL and an uninitialized or invalidated structure.
*
* Ensures:
*
*\li "ccmsg" is a valid structure.
*/
void
isccc_ccmsg_setmaxsize(isccc_ccmsg_t *ccmsg, unsigned int maxsize);
/*%
* Set the maximum packet size to "maxsize"
*
* Requires:
*
*\li "ccmsg" be valid.
*
*\li 512 <= "maxsize" <= 4294967296
*/
isc_result_t
isccc_ccmsg_readmessage(isccc_ccmsg_t *ccmsg,
isc_task_t *task, isc_taskaction_t action, void *arg);
/*%
* Schedule an event to be delivered when a command channel message is
* readable, or when an error occurs on the socket.
*
* Requires:
*
*\li "ccmsg" be valid.
*
*\li "task", "taskaction", and "arg" be valid.
*
* Returns:
*
*\li #ISC_R_SUCCESS -- no error
*\li Anything that the isc_socket_recv() call can return. XXXMLG
*
* Notes:
*
*\li The event delivered is a fully generic event. It will contain no
* actual data. The sender will be a pointer to the isccc_ccmsg_t.
* The result code inside that structure should be checked to see
* what the final result was.
*/
void
isccc_ccmsg_cancelread(isccc_ccmsg_t *ccmsg);
/*%
* Cancel a readmessage() call. The event will still be posted with a
* CANCELED result code.
*
* Requires:
*
*\li "ccmsg" be valid.
*/
void
isccc_ccmsg_invalidate(isccc_ccmsg_t *ccmsg);
/*%
* Clean up all allocated state, and invalidate the structure.
*
* Requires:
*
*\li "ccmsg" be valid.
*
* Ensures:
*
*\li "ccmsg" is invalidated and disassociated with all memory contexts,
* sockets, etc.
*/
ISC_LANG_ENDDECLS
#endif /* ISCCC_CCMSG_H */
alist.h 0000644 00000004537 15051120272 0006035 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_ALIST_H
#define ISCCC_ALIST_H 1
/*! \file isccc/alist.h */
#include <stdbool.h>
#include <stdio.h>
#include <isc/lang.h>
#include <isccc/types.h>
ISC_LANG_BEGINDECLS
isccc_sexpr_t *
isccc_alist_create(void);
bool
isccc_alist_alistp(isccc_sexpr_t *alist);
bool
isccc_alist_emptyp(isccc_sexpr_t *alist);
isccc_sexpr_t *
isccc_alist_first(isccc_sexpr_t *alist);
isccc_sexpr_t *
isccc_alist_assq(isccc_sexpr_t *alist, const char *key);
void
isccc_alist_delete(isccc_sexpr_t *alist, const char *key);
isccc_sexpr_t *
isccc_alist_define(isccc_sexpr_t *alist, const char *key, isccc_sexpr_t *value);
isccc_sexpr_t *
isccc_alist_definestring(isccc_sexpr_t *alist, const char *key, const char *str);
isccc_sexpr_t *
isccc_alist_definebinary(isccc_sexpr_t *alist, const char *key, isccc_region_t *r);
isccc_sexpr_t *
isccc_alist_lookup(isccc_sexpr_t *alist, const char *key);
isc_result_t
isccc_alist_lookupstring(isccc_sexpr_t *alist, const char *key, char **strp);
isc_result_t
isccc_alist_lookupbinary(isccc_sexpr_t *alist, const char *key, isccc_region_t **r);
void
isccc_alist_prettyprint(isccc_sexpr_t *sexpr, unsigned int indent, FILE *stream);
ISC_LANG_ENDDECLS
#endif /* ISCCC_ALIST_H */
result.h 0000644 00000004216 15051120272 0006231 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_RESULT_H
#define ISCCC_RESULT_H 1
/*! \file isccc/result.h */
#include <isc/lang.h>
#include <isc/resultclass.h>
#include <isc/result.h>
#include <isccc/types.h>
/*% Unknown Version */
#define ISCCC_R_UNKNOWNVERSION (ISC_RESULTCLASS_ISCCC + 0)
/*% Syntax Error */
#define ISCCC_R_SYNTAX (ISC_RESULTCLASS_ISCCC + 1)
/*% Bad Authorization */
#define ISCCC_R_BADAUTH (ISC_RESULTCLASS_ISCCC + 2)
/*% Expired */
#define ISCCC_R_EXPIRED (ISC_RESULTCLASS_ISCCC + 3)
/*% Clock Skew */
#define ISCCC_R_CLOCKSKEW (ISC_RESULTCLASS_ISCCC + 4)
/*% Duplicate */
#define ISCCC_R_DUPLICATE (ISC_RESULTCLASS_ISCCC + 5)
/*% Maximum recursion depth */
#define ISCCC_R_MAXDEPTH (ISC_RESULTCLASS_ISCCC + 6)
#define ISCCC_R_NRESULTS 7 /*%< Number of results */
ISC_LANG_BEGINDECLS
const char *
isccc_result_totext(isc_result_t result);
/*%
* Convert a isccc_result_t into a string message describing the result.
*/
void
isccc_result_register(void);
ISC_LANG_ENDDECLS
#endif /* ISCCC_RESULT_H */
base64.h 0000644 00000004606 15051120272 0006002 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_BASE64_H
#define ISCCC_BASE64_H 1
/*! \file isccc/base64.h */
#include <isc/lang.h>
#include <isccc/types.h>
ISC_LANG_BEGINDECLS
/***
*** Functions
***/
isc_result_t
isccc_base64_encode(isccc_region_t *source, int wordlength,
const char *wordbreak, isccc_region_t *target);
/*%<
* Convert data into base64 encoded text.
*
* Notes:
*\li The base64 encoded text in 'target' will be divided into
* words of at most 'wordlength' characters, separated by
* the 'wordbreak' string. No parentheses will surround
* the text.
*
* Requires:
*\li 'source' is a region containing binary data.
*\li 'target' is a text region containing available space.
*\li 'wordbreak' points to a null-terminated string of
* zero or more whitespace characters.
*/
isc_result_t
isccc_base64_decode(const char *cstr, isccc_region_t *target);
/*%<
* Decode a null-terminated base64 string.
*
* Requires:
*\li 'cstr' is non-null.
*\li 'target' is a valid region.
*
* Returns:
*\li #ISC_R_SUCCESS -- the entire decoded representation of 'cstring'
* fit in 'target'.
*\li #ISC_R_BADBASE64 -- 'cstr' is not a valid base64 encoding.
*\li #ISC_R_NOSPACE -- 'target' is not big enough.
*/
ISC_LANG_ENDDECLS
#endif /* ISCCC_BASE64_H */
symtab.h 0000644 00000010205 15051120272 0006205 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_SYMTAB_H
#define ISCCC_SYMTAB_H 1
/*****
***** Module Info
*****/
/*! \file isccc/symtab.h
* \brief
* Provides a simple memory-based symbol table.
*
* Keys are C strings. A type may be specified when looking up,
* defining, or undefining. A type value of 0 means "match any type";
* any other value will only match the given type.
*
* It's possible that a client will attempt to define a <key, type,
* value> tuple when a tuple with the given key and type already
* exists in the table. What to do in this case is specified by the
* client. Possible policies are:
*
*\li isccc_symexists_reject Disallow the define, returning #ISC_R_EXISTS
*\li isccc_symexists_replace Replace the old value with the new. The
* undefine action (if provided) will be called
* with the old <key, type, value> tuple.
*\li isccc_symexists_add Add the new tuple, leaving the old tuple in
* the table. Subsequent lookups will retrieve
* the most-recently-defined tuple.
*
* A lookup of a key using type 0 will return the most-recently
* defined symbol with that key. An undefine of a key using type 0
* will undefine the most-recently defined symbol with that key.
* Trying to define a key with type 0 is illegal.
*
* The symbol table library does not make a copy the key field, so the
* caller must ensure that any key it passes to isccc_symtab_define()
* will not change until it calls isccc_symtab_undefine() or
* isccc_symtab_destroy().
*
* A user-specified action will be called (if provided) when a symbol
* is undefined. It can be used to free memory associated with keys
* and/or values.
*/
/***
*** Imports.
***/
#include <stdbool.h>
#include <isc/lang.h>
#include <isccc/types.h>
/***
*** Symbol Tables.
***/
typedef union isccc_symvalue {
void * as_pointer;
int as_integer;
unsigned int as_uinteger;
} isccc_symvalue_t;
typedef void (*isccc_symtabundefaction_t)(char *key, unsigned int type,
isccc_symvalue_t value, void *userarg);
typedef bool (*isccc_symtabforeachaction_t)(char *key,
unsigned int type,
isccc_symvalue_t value,
void *userarg);
typedef enum {
isccc_symexists_reject = 0,
isccc_symexists_replace = 1,
isccc_symexists_add = 2
} isccc_symexists_t;
ISC_LANG_BEGINDECLS
isc_result_t
isccc_symtab_create(unsigned int size,
isccc_symtabundefaction_t undefine_action, void *undefine_arg,
bool case_sensitive, isccc_symtab_t **symtabp);
void
isccc_symtab_destroy(isccc_symtab_t **symtabp);
isc_result_t
isccc_symtab_lookup(isccc_symtab_t *symtab, const char *key, unsigned int type,
isccc_symvalue_t *value);
isc_result_t
isccc_symtab_define(isccc_symtab_t *symtab, char *key, unsigned int type,
isccc_symvalue_t value, isccc_symexists_t exists_policy);
isc_result_t
isccc_symtab_undefine(isccc_symtab_t *symtab, const char *key, unsigned int type);
void
isccc_symtab_foreach(isccc_symtab_t *symtab, isccc_symtabforeachaction_t action,
void *arg);
ISC_LANG_ENDDECLS
#endif /* ISCCC_SYMTAB_H */
sexpr.h 0000644 00000005665 15051120272 0006065 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_SEXPR_H
#define ISCCC_SEXPR_H 1
/*! \file isccc/sexpr.h */
#include <stdbool.h>
#include <stdio.h>
#include <isc/lang.h>
#include <isccc/types.h>
ISC_LANG_BEGINDECLS
/*% dotted pair structure */
struct isccc_dottedpair {
isccc_sexpr_t *car;
isccc_sexpr_t *cdr;
};
/*% iscc_sexpr structure */
struct isccc_sexpr {
unsigned int type;
union {
char * as_string;
isccc_dottedpair_t as_dottedpair;
isccc_region_t as_region;
} value;
};
#define ISCCC_SEXPRTYPE_NONE 0x00 /*%< Illegal. */
#define ISCCC_SEXPRTYPE_T 0x01
#define ISCCC_SEXPRTYPE_STRING 0x02
#define ISCCC_SEXPRTYPE_DOTTEDPAIR 0x03
#define ISCCC_SEXPRTYPE_BINARY 0x04
#define ISCCC_SEXPR_CAR(s) (s)->value.as_dottedpair.car
#define ISCCC_SEXPR_CDR(s) (s)->value.as_dottedpair.cdr
isccc_sexpr_t *
isccc_sexpr_cons(isccc_sexpr_t *car, isccc_sexpr_t *cdr);
isccc_sexpr_t *
isccc_sexpr_tconst(void);
isccc_sexpr_t *
isccc_sexpr_fromstring(const char *str);
isccc_sexpr_t *
isccc_sexpr_frombinary(const isccc_region_t *region);
void
isccc_sexpr_free(isccc_sexpr_t **sexprp);
void
isccc_sexpr_print(isccc_sexpr_t *sexpr, FILE *stream);
isccc_sexpr_t *
isccc_sexpr_car(isccc_sexpr_t *list);
isccc_sexpr_t *
isccc_sexpr_cdr(isccc_sexpr_t *list);
void
isccc_sexpr_setcar(isccc_sexpr_t *pair, isccc_sexpr_t *car);
void
isccc_sexpr_setcdr(isccc_sexpr_t *pair, isccc_sexpr_t *cdr);
isccc_sexpr_t *
isccc_sexpr_addtolist(isccc_sexpr_t **l1p, isccc_sexpr_t *l2);
bool
isccc_sexpr_listp(isccc_sexpr_t *sexpr);
bool
isccc_sexpr_emptyp(isccc_sexpr_t *sexpr);
bool
isccc_sexpr_stringp(isccc_sexpr_t *sexpr);
bool
isccc_sexpr_binaryp(isccc_sexpr_t *sexpr);
char *
isccc_sexpr_tostring(isccc_sexpr_t *sexpr);
isccc_region_t *
isccc_sexpr_tobinary(isccc_sexpr_t *sexpr);
ISC_LANG_ENDDECLS
#endif /* ISCCC_SEXPR_H */
events.h 0000644 00000003003 15051120272 0006210 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_EVENTS_H
#define ISCCC_EVENTS_H 1
/*! \file isccc/events.h */
#include <isc/eventclass.h>
/*%
* Registry of ISCCC event numbers.
*/
#define ISCCC_EVENT_CCMSG (ISC_EVENTCLASS_ISCCC + 0)
#define ISCCC_EVENT_FIRSTEVENT (ISC_EVENTCLASS_ISCCC + 0)
#define ISCCC_EVENT_LASTEVENT (ISC_EVENTCLASS_ISCCC + 65535)
#endif /* ISCCC_EVENTS_H */
util.h 0000644 00000011614 15051120272 0005670 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_UTIL_H
#define ISCCC_UTIL_H 1
#include <inttypes.h>
#include <isc/util.h>
/*! \file isccc/util.h
* \brief
* Macros for dealing with unaligned numbers.
*
* \note no side effects are allowed when invoking these macros!
*/
#define GET8(v, w) \
do { \
v = *w; \
w++; \
} while (0)
#define GET16(v, w) \
do { \
v = (unsigned int)w[0] << 8; \
v |= (unsigned int)w[1]; \
w += 2; \
} while (0)
#define GET24(v, w) \
do { \
v = (unsigned int)w[0] << 16; \
v |= (unsigned int)w[1] << 8; \
v |= (unsigned int)w[2]; \
w += 3; \
} while (0)
#define GET32(v, w) \
do { \
v = (unsigned int)w[0] << 24; \
v |= (unsigned int)w[1] << 16; \
v |= (unsigned int)w[2] << 8; \
v |= (unsigned int)w[3]; \
w += 4; \
} while (0)
#define GET64(v, w) \
do { \
v = (uint64_t)w[0] << 56; \
v |= (uint64_t)w[1] << 48; \
v |= (uint64_t)w[2] << 40; \
v |= (uint64_t)w[3] << 32; \
v |= (uint64_t)w[4] << 24; \
v |= (uint64_t)w[5] << 16; \
v |= (uint64_t)w[6] << 8; \
v |= (uint64_t)w[7]; \
w += 8; \
} while (0)
#define GETC16(v, w, d) \
do { \
GET8(v, w); \
if (v == 0) \
d = ISCCC_TRUE; \
else { \
d = ISCCC_FALSE; \
if (v == 255) \
GET16(v, w); \
} \
} while (0)
#define GETC32(v, w) \
do { \
GET24(v, w); \
if (v == 0xffffffu) \
GET32(v, w); \
} while (0)
#define GET_OFFSET(v, w) GET32(v, w)
#define GET_MEM(v, c, w) \
do { \
memmove(v, w, c); \
w += c; \
} while (0)
#define GET_TYPE(v, w) \
do { \
GET8(v, w); \
if (v > 127) { \
if (v < 255) \
v = ((v & 0x7f) << 16) | ISCCC_RDATATYPE_SIG; \
else \
GET32(v, w); \
} \
} while (0)
#define PUT8(v, w) \
do { \
*w = (v & 0x000000ffU); \
w++; \
} while (0)
#define PUT16(v, w) \
do { \
w[0] = (v & 0x0000ff00U) >> 8; \
w[1] = (v & 0x000000ffU); \
w += 2; \
} while (0)
#define PUT24(v, w) \
do { \
w[0] = (v & 0x00ff0000U) >> 16; \
w[1] = (v & 0x0000ff00U) >> 8; \
w[2] = (v & 0x000000ffU); \
w += 3; \
} while (0)
#define PUT32(v, w) \
do { \
w[0] = (v & 0xff000000U) >> 24; \
w[1] = (v & 0x00ff0000U) >> 16; \
w[2] = (v & 0x0000ff00U) >> 8; \
w[3] = (v & 0x000000ffU); \
w += 4; \
} while (0)
#define PUT64(v, w) \
do { \
w[0] = (v & 0xff00000000000000ULL) >> 56; \
w[1] = (v & 0x00ff000000000000ULL) >> 48; \
w[2] = (v & 0x0000ff0000000000ULL) >> 40; \
w[3] = (v & 0x000000ff00000000ULL) >> 32; \
w[4] = (v & 0x00000000ff000000ULL) >> 24; \
w[5] = (v & 0x0000000000ff0000ULL) >> 16; \
w[6] = (v & 0x000000000000ff00ULL) >> 8; \
w[7] = (v & 0x00000000000000ffULL); \
w += 8; \
} while (0)
#define PUTC16(v, w) \
do { \
if (v > 0 && v < 255) \
PUT8(v, w); \
else { \
PUT8(255, w); \
PUT16(v, w); \
} \
} while (0)
#define PUTC32(v, w) \
do { \
if (v < 0xffffffU) \
PUT24(v, w); \
else { \
PUT24(0xffffffU, w); \
PUT32(v, w); \
} \
} while (0)
#define PUT_OFFSET(v, w) PUT32(v, w)
#include <string.h>
#define PUT_MEM(s, c, w) \
do { \
memmove(w, s, c); \
w += c; \
} while (0)
/*
* Regions.
*/
#define REGION_SIZE(r) ((unsigned int)((r).rend - (r).rstart))
#define REGION_EMPTY(r) ((r).rstart == (r).rend)
#define REGION_FROMSTRING(r, s) do { \
(r).rstart = (unsigned char *)s; \
(r).rend = (r).rstart + strlen(s); \
} while (0)
/*%
* Use this to remove the const qualifier of a variable to assign it to
* a non-const variable or pass it as a non-const function argument ...
* but only when you are sure it won't then be changed!
* This is necessary to sometimes shut up some compilers
* (as with gcc -Wcast-qual) when there is just no other good way to avoid the
* situation.
*/
#define DE_CONST(konst, var) \
do { \
union { const void *k; void *v; } _u; \
_u.k = konst; \
var = _u.v; \
} while (0)
#endif /* ISCCC_UTIL_H */
version.h 0000644 00000001303 15051120272 0006372 0 ustar 00 /*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
/*! \file isccc/version.h */
#include <isc/platform.h>
LIBISCCC_EXTERNAL_DATA extern const char isccc_version[];
LIBISCCC_EXTERNAL_DATA extern const unsigned int isccc_libinterface;
LIBISCCC_EXTERNAL_DATA extern const unsigned int isccc_librevision;
LIBISCCC_EXTERNAL_DATA extern const unsigned int isccc_libage;
cc.h 0000644 00000007170 15051120272 0005302 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_CC_H
#define ISCCC_CC_H 1
/*! \file isccc/cc.h */
#include <inttypes.h>
#include <stdbool.h>
#include <isc/lang.h>
#include <isc/buffer.h>
#include <isccc/types.h>
ISC_LANG_BEGINDECLS
/*% from lib/dns/include/dst/dst.h */
#define ISCCC_ALG_UNKNOWN 0
#define ISCCC_ALG_HMACMD5 157
#define ISCCC_ALG_HMACSHA1 161
#define ISCCC_ALG_HMACSHA224 162
#define ISCCC_ALG_HMACSHA256 163
#define ISCCC_ALG_HMACSHA384 164
#define ISCCC_ALG_HMACSHA512 165
/*% Maximum Datagram Package */
#define ISCCC_CC_MAXDGRAMPACKET 4096
/*% Message Type String */
#define ISCCC_CCMSGTYPE_STRING 0x00
/*% Message Type Binary Data */
#define ISCCC_CCMSGTYPE_BINARYDATA 0x01
/*% Message Type Table */
#define ISCCC_CCMSGTYPE_TABLE 0x02
/*% Message Type List */
#define ISCCC_CCMSGTYPE_LIST 0x03
/*% Send to Wire */
isc_result_t
isccc_cc_towire(isccc_sexpr_t *alist, isc_buffer_t **buffer,
uint32_t algorithm, isccc_region_t *secret);
/*% Get From Wire */
isc_result_t
isccc_cc_fromwire(isccc_region_t *source, isccc_sexpr_t **alistp,
uint32_t algorithm, isccc_region_t *secret);
/*% Create Message */
isc_result_t
isccc_cc_createmessage(uint32_t version, const char *from, const char *to,
uint32_t serial, isccc_time_t now,
isccc_time_t expires, isccc_sexpr_t **alistp);
/*% Create Acknowledgment */
isc_result_t
isccc_cc_createack(isccc_sexpr_t *message, bool ok,
isccc_sexpr_t **ackp);
/*% Is Ack? */
bool
isccc_cc_isack(isccc_sexpr_t *message);
/*% Is Reply? */
bool
isccc_cc_isreply(isccc_sexpr_t *message);
/*% Create Response */
isc_result_t
isccc_cc_createresponse(isccc_sexpr_t *message, isccc_time_t now,
isccc_time_t expires, isccc_sexpr_t **alistp);
/*% Define String */
isccc_sexpr_t *
isccc_cc_definestring(isccc_sexpr_t *alist, const char *key, const char *str);
/*% Define uint 32 */
isccc_sexpr_t *
isccc_cc_defineuint32(isccc_sexpr_t *alist, const char *key, uint32_t i);
/*% Lookup String */
isc_result_t
isccc_cc_lookupstring(isccc_sexpr_t *alist, const char *key, char **strp);
/*% Lookup uint 32 */
isc_result_t
isccc_cc_lookupuint32(isccc_sexpr_t *alist, const char *key,
uint32_t *uintp);
/*% Create Symbol Table */
isc_result_t
isccc_cc_createsymtab(isccc_symtab_t **symtabp);
/*% Clean up Symbol Table */
void
isccc_cc_cleansymtab(isccc_symtab_t *symtab, isccc_time_t now);
/*% Check for Duplicates */
isc_result_t
isccc_cc_checkdup(isccc_symtab_t *symtab, isccc_sexpr_t *message,
isccc_time_t now);
ISC_LANG_ENDDECLS
#endif /* ISCCC_CC_H */
lib.h 0000644 00000003040 15051120272 0005453 0 ustar 00 /*
* Portions Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*
* Portions Copyright (C) 2001 Nominum, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ISCCC_LIB_H
#define ISCCC_LIB_H 1
/*! \file isccc/lib.h */
#include <isc/types.h>
#include <isc/lang.h>
ISC_LANG_BEGINDECLS
LIBISCCC_EXTERNAL_DATA extern isc_msgcat_t *isccc_msgcat;
void
isccc_lib_initmsgcat(void);
/*%
* Initialize the ISCCC library's message catalog, isccc_msgcat, if it
* has not already been initialized.
*/
ISC_LANG_ENDDECLS
#endif /* ISCCC_LIB_H */