From owner-p4-projects@FreeBSD.ORG Wed Oct 3 21:29:35 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CB3A016A41B; Wed, 3 Oct 2007 21:29:35 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9079A16A417 for ; Wed, 3 Oct 2007 21:29:35 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6A42A13C49D for ; Wed, 3 Oct 2007 21:29:35 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l93LTZKM097181 for ; Wed, 3 Oct 2007 21:29:35 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l93LTZUK097178 for perforce@freebsd.org; Wed, 3 Oct 2007 21:29:35 GMT (envelope-from fli@FreeBSD.org) Date: Wed, 3 Oct 2007 21:29:35 GMT Message-Id: <200710032129.l93LTZUK097178@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 127150 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Oct 2007 21:29:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=127150 Change 127150 by fli@fli_nexus on 2007/10/03 21:29:26 - Add the additional section to psuedo packet. - Add the class mdns_c_any and type mdns_t_any - Re-arrange some structures. - Minor whitespace and indentation fixes. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#8 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/mdns.h#8 (text+ko) ==== @@ -76,7 +76,23 @@ */ enum { MDNS_UDP, MDNS_TCP }; +/* + * Pseudo MDNS Header + */ +struct mdns_head { + uint16_t h_id; /* Query id (UC only, always 0 for MC) */ + int h_flags; +#define MDNS_HEAD_QUERY 0x01 +#define MDNS_HEAD_RESP 0x02 +#define MDNS_HEAD_TC 0x04 +#define MDNS_HEAD_AA 0x08 + uint16_t h_cquestion; /* Question count */ + uint16_t h_canswer; /* Answer count */ + uint16_t h_cauth; /* Auth count */ + uint16_t h_caddit; /* Additional count */ +}; + /* * Packet buffer */ @@ -100,7 +116,7 @@ char **offsets; /* Section offset pointers */ int last_offset; TAILQ_HEAD(, mdns_pkg_res) res_head; - } p_data[4]; + } p_data[5]; #define p_buf(x) p_data[x].bufptr #define p_bufseg(x) p_data[x].buf #define p_secoff(x) p_data[x].offsets @@ -110,7 +126,10 @@ #define p_questions 1 #define p_answers 2 #define p_auths 3 +#define p_addit 4 #define p_isrrset(x) ((x) > 1) /* 0 = qset, 1 = rrset */ + + struct mdns_head p_head; /* Header data */ }; /* @@ -163,59 +182,51 @@ mdns_c_in = 1 }; -/* Length of a mdns record */ -#define MDNS_RECORD_LEN 255 +/* Special classes/types */ +#define mdns_c_any 255 /* ANY class */ +#define mdns_t_any 255 /* ANY type */ /* - * MDNS Header + * Length of a mdns record, including terminating 0-length label. + * The effective length on wire is 253 bytes (leading/ending label). */ -struct mdns_head { - uint16_t h_id; /* Query id (UC only, always 0 for MC) */ - int h_flags; -#define MDNS_HEAD_QUERY 0x01 -#define MDNS_HEAD_RESP 0x02 -#define MDNS_HEAD_TC 0x04 -#define MDNS_HEAD_AA 0x08 - uint16_t h_cquestion; /* Question count */ - uint16_t h_canswer; /* Answer count */ - uint16_t h_cauth; /* Auth count */ - uint16_t h_caddit; /* Additional count */ -}; +#define MDNS_RECORD_LEN 255 /* * MDNS resource set */ struct mdns_rrset { - char name[MDNS_RECORD_LEN + 1]; /* rrset name */ - char *r_name; - uint16_t r_class; /* rrset class */ - uint16_t r_type; /* Record type */ - int r_cflush; /* cache flush */ - uint32_t r_ttl; /* Time to live */ - uint16_t r_datalen; /* Length of resource data */ - char *r_data; /* Resource data */ + char name[MDNS_RECORD_LEN + 1]; /* Private storage */ + char *r_name; /* Record name */ + uint16_t r_class; /* Record class */ + uint16_t r_type; /* Record type */ + int r_cflush; /* Cache flush? */ + uint32_t r_ttl; /* Time to live */ + uint16_t r_datalen; /* Length of resource data */ + char *r_data; /* Resource data */ }; +/* Record name set macros */ #define mdns_rrset_name(rr, str) (rr)->r_name = str #define mdns_rrset_name_dup(rr, str) \ strncpy((rr)->name, str, MDNS_RECORD_LEN); \ - (rr)->r_name = (rr)->name; + (rr)->r_name = (rr)->name; /* * MDNS question/query set */ struct mdns_qset { - char name[MDNS_RECORD_LEN + 1]; /* qname */ - char *q_name; - uint16_t q_class; /* qset class */ - uint16_t q_type; /* query type */ - int q_unicast; /* unicast desired */ + char name[MDNS_RECORD_LEN + 1]; /* qname */ + char *q_name; + uint16_t q_class; /* qset class */ + uint16_t q_type; /* query type */ + int q_unicast; /* unicast desired */ }; #define mdns_qset_name(qs, str) (qs)->q_name = str #define mdns_qset_name_dup(qs, str) \ strncpy((qs)->name, str, MDNS_RECORD_LEN); \ - (qs)->q_name = (qs)->name; + (qs)->q_name = (qs)->name; /* * Packet resource @@ -237,7 +248,7 @@ */ #define MDNS_ENC_CHAR 0x01 #define MDNS_ENC_WCHAR 0x02 -#define MDNS_ENC_BINARY 0x04 +#define MDNS_ENC_BINARY 0x04 #define MDNS_ENC_AUTO 0x08 #define MDNS_ENC_ADDR 0x10 #define MDNS_ENC_NAME 0x20 @@ -288,6 +299,7 @@ int mdns_pkg_getquestion(struct mdns_packet *, int, struct mdns_qset *); int mdns_pkg_getanswer(struct mdns_packet *, int, struct mdns_rrset *); int mdns_pkg_getauth(struct mdns_packet *, int, struct mdns_rrset *); +int mdns_pkg_getaddit(struct mdns_packet *, int, struct mdns_rrset *); int mdns_type_atoi(const char *); void * mdns_res_encode(uint16_t, uint16_t, void *, int, size_t, size_t *);