added common test macros.

added dhcp packet composition functions
This commit is contained in:
2017-12-26 10:06:00 +00:00
parent 480e68fe36
commit 231f1b9508
14 changed files with 1271 additions and 244 deletions

View File

@ -33,6 +33,7 @@ pkginclude_HEADERS = \
time.h \
tmr.h \
tre.h \
test.h \
uni.h \
uri.h \
utf8.h \

View File

@ -135,8 +135,8 @@ am__can_run_installinfo = \
am__pkginclude_HEADERS_DIST = alg.h arr.h chr.h cp949.h cp950.h dll.h \
env.h fma.h fmt.h gdl.h htb.h htl.h hton.h hwad.h ipad.h \
main.h map.h mb8.h mbwc.h mem.h oht.h opt.h path.h pma.h rbt.h \
rex.h sll.h slmb.h str.h time.h tmr.h tre.h uni.h uri.h utf8.h \
xma.h Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
rex.h sll.h slmb.h str.h time.h tmr.h tre.h test.h uni.h uri.h \
utf8.h xma.h Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
ScopedPtr.hpp SharedPtr.hpp StrBase.hpp String.hpp Mpool.hpp \
Association.hpp LinkedList.hpp HashList.hpp HashTable.hpp \
RedBlackTree.hpp RedBlackTable.hpp Array.hpp BinaryHeap.hpp
@ -374,8 +374,8 @@ top_srcdir = @top_srcdir@
pkginclude_HEADERS = alg.h arr.h chr.h cp949.h cp950.h dll.h env.h \
fma.h fmt.h gdl.h htb.h htl.h hton.h hwad.h ipad.h main.h \
map.h mb8.h mbwc.h mem.h oht.h opt.h path.h pma.h rbt.h rex.h \
sll.h slmb.h str.h time.h tmr.h tre.h uni.h uri.h utf8.h xma.h \
$(am__append_1)
sll.h slmb.h str.h time.h tmr.h tre.h test.h uni.h uri.h \
utf8.h xma.h $(am__append_1)
all: all-am
.SUFFIXES:

View File

@ -0,0 +1,38 @@
/*
* $Id$
*
Copyright (c) 2006-2014 Chung, Hyung-Hwan. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _QSE_CMN_TEST_H_
#define _QSE_CMN_TEST_H_
#include <qse/si/sio.h>
#define QSE_TESASSERT_FAIL1(msg1) qse_printf(QSE_T("FAILURE in %hs[%d] - %s\n"), __func__, (int)__LINE__, msg1)
#define QSE_TESASSERT_FAIL2(msg1,msg2) qse_printf(QSE_T("FAILURE in %hs[%d] - %s - %s\n"), __func__, (int)__LINE__, msg1, msg2)
#define QSE_TESASSERT1(test,msg1) do { if (!(test)) { QSE_TESASSERT_FAIL1(msg1); goto oops; } } while(0)
#define QSE_TESASSERT2(test,msg1,msg2) do { if (!(test)) { QSE_TESASSERT_FAIL2(msg1,msg2); goto oops; } } while(0)
#endif

View File

@ -11,8 +11,19 @@
/* operation code */
enum qse_dhcp4_op_t
{
QSE_DHCP4OP_BOOTREQUEST = 1,
QSE_DHCP4OP_BOOTREPLY = 2
QSE_DHCP4_OP_BOOTREQUEST = 1,
QSE_DHCP4_OP_BOOTREPLY = 2
};
enum qse_dhcp4_htype_t
{
QSE_DHCP4_HTYPE_ETHERNET = 1,
QSE_DHCP4_HTYPE_IEEE802 = 6,
QSE_DHCP4_HTYPE_ARCNET = 7,
QSE_DHCP4_HTYPE_APPLETALK = 8,
QSE_DHCP4_HTYPE_HDLC = 17,
QSE_DHCP4_HTYPE_ATM = 19,
QSE_DHCP4_HTYPE_INFINIBAND = 32
};
/* option codes (partial) */
@ -71,17 +82,29 @@ enum qse_dhcp4_opt_relay_t
/* message type */
enum qse_dhcp4_msg_t
{
QSE_DHCP4MSG_DISCOVER = 1,
QSE_DHCP4MSG_OFFER = 2,
QSE_DHCP4MSG_REQUEST = 3,
QSE_DHCP4MSG_DECLINE = 4,
QSE_DHCP4MSG_ACK = 5,
QSE_DHCP4MSG_NAK = 6,
QSE_DHCP4MSG_RELEASE = 7,
QSE_DHCP4MSG_INFORM = 8
QSE_DHCP4_MSG_DISCOVER = 1,
QSE_DHCP4_MSG_OFFER = 2,
QSE_DHCP4_MSG_REQUEST = 3,
QSE_DHCP4_MSG_DECLINE = 4,
QSE_DHCP4_MSG_ACK = 5,
QSE_DHCP4_MSG_NAK = 6,
QSE_DHCP4_MSG_RELEASE = 7,
QSE_DHCP4_MSG_INFORM = 8,
/*QSE_DHCP4_MSG_RENEW = 9,*/
QSE_DHCP4_MSG_LEASE_QUERY = 10,
QSE_DHCP4_MSG_LEASE_UNASSIGNED = 11,
QSE_DHCP4_MSG_LEASE_UNKNOWN = 12,
QSE_DHCP4_MSG_LEASE_ACTIVE = 13,
QSE_DHCP4_MSG_BULK_LEASE_QUERY = 14,
QSE_DHCP4_MSG_LEASE_QUERY_DONE = 15
};
struct qse_dhcp4_pkt_t
#include <qse/pack1.h>
struct qse_dhcp4_pkt_hdr_t
{
qse_uint8_t op;
qse_uint8_t htype;
@ -103,24 +126,74 @@ struct qse_dhcp4_pkt_t
* the first four bytes of the options compose a magic cookie
* 0x63 0x82 0x53 0x63 */
};
typedef struct qse_dhcp4_pkt_hdr_t qse_dhcp4_pkt_hdr_t;
typedef struct qse_dhcp4_pkt_t qse_dhcp4_pkt_t;
struct qse_dhcp4_opt_hdr_t
{
qse_uint8_t code;
qse_uint8_t len;
};
typedef struct qse_dhcp4_opt_hdr_t qse_dhcp4_opt_hdr_t;
typedef int (*qse_dhcp4_opt_walker_t) (qse_dhcp4_opt_hdr_t* opt);
struct qse_dhcp4_pktinf_t
{
qse_dhcp4_pkt_hdr_t* hdr;
qse_size_t len;
};
typedef struct qse_dhcp4_pktinf_t qse_dhcp4_pktinf_t;
struct qse_dhcp4_pktbuf_t
{
qse_dhcp4_pkt_hdr_t* hdr;
qse_size_t len;
qse_size_t capa;
};
typedef struct qse_dhcp4_pktbuf_t qse_dhcp4_pktbuf_t;
#include <qse/unpack.h>
#ifdef __cplusplus
extern "C" {
#endif
QSE_EXPORT qse_uint8_t* qse_dhcp4_get_options (
const qse_dhcp4_pkt_t* pkt,
qse_size_t len,
qse_size_t* olen /* option area length */
QSE_EXPORT int qse_dhcp4_initialize_pktbuf (
qse_dhcp4_pktbuf_t* pkt,
void* buf,
qse_size_t capa
);
QSE_EXPORT qse_uint8_t* qse_dhcp4_get_option (
const qse_dhcp4_pkt_t* pkt,
qse_size_t len,
int code,
qse_uint8_t* olen
QSE_EXPORT int qse_dhcp4_add_option (
qse_dhcp4_pktbuf_t* pkt,
int code,
void* optr, /**< option data pointer */
qse_uint8_t olen /**< option data length */
);
QSE_EXPORT void qse_dhcp4_compact_options (
qse_dhcp4_pktbuf_t* pkt
);
#if 0
QSE_EXPORT int qse_dhcp4_add_options (
qse_dhcp4_pkt_hdr_t* pkt,
qse_size_t len,
qse_size_t max,
int code,
qse_uint8_t* optr, /* option data */
qse_uint8_t olen /* option length */
);
#endif
QSE_EXPORT int qse_dhcp4_walk_options (
const qse_dhcp4_pktinf_t* pkt,
qse_dhcp4_opt_walker_t walker
);
QSE_EXPORT qse_dhcp4_opt_hdr_t* qse_dhcp4_find_option (
const qse_dhcp4_pktinf_t* pkt,
int ode
);
QSE_EXPORT qse_uint8_t* qse_dhcp4_get_relay_suboption (
@ -130,16 +203,6 @@ QSE_EXPORT qse_uint8_t* qse_dhcp4_get_relay_suboption (
qse_uint8_t* olen
);
QSE_EXPORT int qse_dhcp4_add_option (
qse_dhcp4_pkt_t* pkt,
qse_size_t len,
qse_size_t max,
int code,
qse_uint8_t* optr, /* option data */
qse_uint8_t olen /* option length */
);
#ifdef __cplusplus
}
#endif