Skip site navigation (1)Skip section navigation (2)
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>