Date: Sat, 2 Jun 2007 12:05:54 GMT From: Fredrik Lindberg <fli@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 120769 for review Message-ID: <200706021205.l52C5srK089088@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=120769 Change 120769 by fli@fli_genesis on 2007/06/02 12:04:53 - Add and use MDNS_PKG_MAX_LEN instead of 9000 - Cap max number of bytes received via TCP to MDNS_PKG_MAX_LEN - Use IPv6 header size instead of IPv4 when calculating packet size. - Remove debugging macros that live in debug.h now. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#4 edit .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.h#3 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.c#4 (text+ko) ==== @@ -24,27 +24,30 @@ * */ -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <strings.h> -#include <string.h> #include <sys/types.h> #include <sys/socket.h> +#include <sys/sockio.h> +#include <sys/ioctl.h> +#include <sys/uio.h> + #include <net/if.h> +#include <net/if_dl.h> + #include <netinet/in.h> #include <arpa/inet.h> + +#include <errno.h> +#include <fcntl.h> #include <ifaddrs.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> #include <unistd.h> -#include <sys/ioctl.h> -#include <sys/sockio.h> -#include <sys/uio.h> -#include <net/if_dl.h> -#include <err.h> -#include <fcntl.h> #include "mdns.h" #include "stack_mdns.h" +#include "debug.h" static int mdns_udp_open(struct mdns *, int); static int mdns_udp_close(struct mdns *, int); @@ -105,16 +108,15 @@ error = ioctl(sock, SIOCGIFMTU, &req); close(sock); /* - * IP-header (no options) and UDP-header - * XXX: Will there ever be ip-options present in multicast packets? + * IPv6-header and UDP-header */ -#define _HDR_OVERHEAD (20 + 8) +#define _HDR_OVERHEAD (40 + 8) if (error != 0) - md->md_maxpkgsz = 512; + md->md_maxpkgsz = MDNS_PKG_UDP_LEN; else { md->md_maxpkgsz = req.ifr_mtu - _HDR_OVERHEAD; - if (md->md_maxpkgsz > 9000) - md->md_maxpkgsz = 9000; + if (md->md_maxpkgsz > MDNS_PKG_MAX_LEN) + md->md_maxpkgsz = MDNS_PKG_MAX_LEN; } #undef _HDR_OVERHEAD @@ -872,8 +874,9 @@ pkg->p_len += n; MDNS_BUFLEN(buf) = n; } - if ((unsigned int)n < MDNS_BUFSZ(buf)) + if ((unsigned int)n < MDNS_BUFSZ(buf) || pkg->p_len >= MDNS_PKG_MAX_LEN) break; + buf = mdns_buf_alloc(md->md_bp, &pkg->p_buflist, 0, 0); if (buf == NULL) return (-1); ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/stack_mdns.h#3 (text+ko) ==== @@ -28,22 +28,8 @@ #define _STACK_MDNS_H_ #include <wchar.h> -#include <assert.h> - #include "stack_buf.h" -/* Structure initialization protection */ -#define MDNS_MAGIC_COOKIE 0xcafebabe -#ifdef DEBUG -#define MDNS_INIT_SET(_md, f) (_md)->f = MDNS_MAGIC_COOKIE; -#define MDNS_INIT_UNSET(_md, f) (_md)->f = ~MDNS_MAGIC_COOKIE; -#define MDNS_INIT_ASSERT(_md, f) assert((_md)->f == MDNS_MAGIC_COOKIE); -#else -#define MDNS_INIT_SET(_md, f) -#define MDNS_INIT_UNSET(_md, f) -#define MDNS_INIT_ASSERT(_md, f) -#endif - /* Multicast DNS constants */ #define MDNS_MCAST_INET "224.0.0.251" /* IPv4 multicast address */ #define MDNS_MCAST_INET6 "ff02::fb" /* IPv6 multicast address */ @@ -52,6 +38,7 @@ /* Header constants */ #define MDNS_PKG_LABEL_LEN 63 #define MDNS_PKG_UDP_LEN 512 /* legacy udp length */ +#define MDNS_PKG_MAX_LEN 9000 /* Maximum packet length */ #define MDNS_HEADER_LEN 12 #define MDNS_QSET_HLEN 4 /* qset header length */ #define MDNS_RRSET_HLEN 10 /* rrset header length */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200706021205.l52C5srK089088>