2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-28 13:08:06 +00:00

Add 32 bit serial arithmetic support.

This commit is contained in:
Mark Andrews 1999-08-30 14:45:01 +00:00
parent 686b27bfd3
commit c4ef94b1a2
3 changed files with 96 additions and 2 deletions

View File

@ -22,8 +22,8 @@ top_srcdir = @top_srcdir@
HEADERS = assertions.h base64.h boolean.h buffer.h error.h event.h \
eventclass.h heap.h int.h interfaceiter.h lang.h lex.h lib.h \
list.h mem.h msgcat.h netaddr.h rbtgen.h region.h result.h \
resultclass.h rwlock.h sockaddr.h socket.h str.h symtab.h \
task.h timer.h types.h
resultclass.h rwlock.h serial.h sockaddr.h socket.h str.h \
symtab.h task.h timer.h types.h
SUBDIRS =
TARGETS =

View File

@ -0,0 +1,55 @@
/* $Id: serial.h,v 1.1 1999/08/30 14:44:11 marka Exp $ */
#ifndef isc_serial_h
#define isc_serial_h
#include <isc/types.h>
#include <isc/boolean.h>
#include <isc/lang.h>
ISC_LANG_BEGINDECLS
/*
* Implement 32 bit serial space arithmetic comparision functions.
*
* Note: Undefined results are returned as ISC_FALSE.
*/
/***
*** Functions
***/
isc_boolean_t isc_serial_lt(isc_uint32_t a, isc_uint32_t b);
/*
* Return true if 'a' < 'b' otherwise false.
*/
isc_boolean_t isc_serial_gt(isc_uint32_t a, isc_uint32_t b);
/*
* Return true if 'a' > 'b' otherwise false.
*/
isc_boolean_t isc_serial_le(isc_uint32_t a, isc_uint32_t b);
/*
* Return true if 'a' <= 'b' otherwise false.
*/
isc_boolean_t isc_serial_ge(isc_uint32_t a, isc_uint32_t b);
/*
* Return true if 'a' >= 'b' otherwise false.
*/
isc_boolean_t isc_serial_eq(isc_uint32_t a, isc_uint32_t b);
/*
* Return true if 'a' == 'b' otherwise false.
*/
isc_boolean_t isc_serial_ne(isc_uint32_t a, isc_uint32_t b);
/*
* Return true if 'a' != 'b' otherwise false.
*/
ISC_LANG_ENDDECLS
#endif /* isc_serial_h */

39
lib/isc/serial.c Normal file
View File

@ -0,0 +1,39 @@
/* $Id: serial.c,v 1.1 1999/08/30 14:45:01 marka Exp $ */
#include <isc/serial.h>
isc_boolean_t
isc_serial_lt(isc_uint32_t a, isc_uint32_t b) {
/*
* Undefined => ISC_FALSE
*/
if (a == (b ^ 0x80000000U))
return (ISC_FALSE);
return (((isc_int32_t)(a - b) < 0) ? ISC_TRUE : ISC_FALSE);
}
isc_boolean_t
isc_serial_gt(isc_uint32_t a, isc_uint32_t b) {
return (((isc_int32_t)(a - b) > 0) ? ISC_TRUE : ISC_FALSE);
}
isc_boolean_t
isc_serial_le(isc_uint32_t a, isc_uint32_t b) {
return ((a == b) ? ISC_TRUE : isc_serial_lt(a, b));
}
isc_boolean_t
isc_serial_ge(isc_uint32_t a, isc_uint32_t b) {
return ((a == b) ? ISC_TRUE : isc_serial_gt(a, b));
}
isc_boolean_t
isc_serial_eq(isc_uint32_t a, isc_uint32_t b) {
return ((a == b) ? ISC_TRUE : ISC_FALSE);
}
isc_boolean_t
isc_serial_ne(isc_uint32_t a, isc_uint32_t b) {
return ((a != b) ? ISC_TRUE : ISC_FALSE);
}