1/*
2 * $Source: /Volumes/backup/dsmigrate/Dumps/../CVS/passwordserver_sasl/cyrus_sasl/mac/kerberos_includes/lsb_addr_comp.h,v $
3 * $Author: snsimon $
4 * $Header: /Volumes/backup/dsmigrate/Dumps/../CVS/passwordserver_sasl/cyrus_sasl/mac/kerberos_includes/lsb_addr_comp.h,v 1.4 2005/01/10 19:13:36 snsimon Exp $
5 *
6 * Copyright 1988 by the Massachusetts Institute of Technology.
7 *
8 * For copying and distribution information, please see the file
9 * <mit-copyright.h>.
10 *
11 * Comparison macros to emulate LSBFIRST comparison results of network
12 * byte-order quantities
13 */
14
15#ifndef	_KERBEROS_LSB_ADDR_COMP_H
16#define	_KERBEROS_LSB_ADDR_COMP_H
17
18#pragma ident	"@(#)lsb_addr_comp.h	1.4	93/02/04 SMI"
19
20#include <kerberos/mit-copyright.h>
21#include <kerberos/osconf.h>
22
23#ifdef	__cplusplus
24extern "C" {
25#endif
26
27#ifdef LSBFIRST
28#define	lsb_net_ulong_less(x, y)	((x < y) ? -1 : ((x > y) ? 1 : 0))
29#define	lsb_net_ushort_less(x, y)	((x < y) ? -1 : ((x > y) ? 1 : 0))
30#else
31/* MSBFIRST */
32#define	u_char_comp(x, y) \
33	(((x) > (y)) ? (1) : (((x) == (y)) ? (0) : (-1)))
34/* This is gross, but... */
35#define	lsb_net_ulong_less(x, y) long_less_than((u_char *)&x, (u_char *)&y)
36#define	lsb_net_ushort_less(x, y) short_less_than((u_char *)&x, (u_char *)&y)
37
38#define	long_less_than(x, y) \
39	(u_char_comp((x)[3], (y)[3]) ? u_char_comp((x)[3], (y)[3]) : \
40	    (u_char_comp((x)[2], (y)[2]) ? u_char_comp((x)[2], (y)[2]) : \
41	    (u_char_comp((x)[1], (y)[1]) ? u_char_comp((x)[1], (y)[1]) : \
42	    (u_char_comp((x)[0], (y)[0])))))
43#define	short_less_than(x, y) \
44	(u_char_comp((x)[1], (y)[1]) ? u_char_comp((x)[1], (y)[1]) : \
45	    (u_char_comp((x)[0], (y)[0])))
46
47#endif /* LSBFIRST */
48
49#ifdef	__cplusplus
50}
51#endif
52
53#endif	/* _KERBEROS_LSB_ADDR_COMP_H */
54