Date: Wed, 3 Oct 2007 21:29:35 GMT From: Fredrik Lindberg <fli@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 127150 for review Message-ID: <200710032129.l93LTZUK097178@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 *);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200710032129.l93LTZUK097178>