/*
 * udp.h
 *
 * User Datagram Protocol (RFC 768).
 *
 * Copyright (c) 2000 Dug Song <dugsong@monkey.org>
 *
 * $Id: udp.h,v 1.8 2002/04/02 05:05:39 dugsong Exp $
 */

#ifndef DNET_UDP_H
#define DNET_UDP_H

#define UDP_HDR_LEN	8

struct udp_hdr {
        uint16_t	uh_sport;	/* source port */
        uint16_t	uh_dport;	/* destination port */
        uint16_t	uh_ulen;	/* udp length (including header) */
        uint16_t	uh_sum;		/* udp checksum */
};

#define UDP_PORT_MAX	65535

#define udp_pack_hdr(hdr, sport, dport, ulen) do {		\
        struct udp_hdr *udp_pack_p = (struct udp_hdr *)(hdr);	\
        udp_pack_p->uh_sport = htons(sport);			\
        udp_pack_p->uh_dport = htons(dport);			\
        udp_pack_p->uh_ulen = htons(ulen);			\
} while (0)

#endif /* DNET_UDP_H */
