From owner-svn-src-projects@FreeBSD.ORG Tue Dec 23 05:00:07 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 94CCD1065677; Tue, 23 Dec 2008 05:00:07 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 78D3E8FC27; Tue, 23 Dec 2008 05:00:07 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mBN501jW081546; Tue, 23 Dec 2008 05:00:01 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mBN5006i081518; Tue, 23 Dec 2008 05:00:00 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812230500.mBN5006i081518@svn.freebsd.org> From: Kip Macy Date: Tue, 23 Dec 2008 05:00:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r186421 - in projects/releng_7_xen: gnu/usr.bin/groff/tmac include include/arpa lib/libc lib/libc/include/isc lib/libc/inet lib/libc/resolv lib/libc/stdio lib/libthr lib/libthr/thread l... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Dec 2008 05:00:07 -0000 Author: kmacy Date: Tue Dec 23 05:00:00 2008 New Revision: 186421 URL: http://svn.freebsd.org/changeset/base/186421 Log: IF_RELENG7 185850:186420 merge latest from 7 stable Modified: projects/releng_7_xen/gnu/usr.bin/groff/tmac/mdoc.local projects/releng_7_xen/include/ (props changed) projects/releng_7_xen/include/arpa/nameser.h projects/releng_7_xen/include/resolv.h projects/releng_7_xen/lib/libc/ (props changed) projects/releng_7_xen/lib/libc/include/isc/eventlib.h (contents, props changed) projects/releng_7_xen/lib/libc/inet/inet_net_pton.c projects/releng_7_xen/lib/libc/resolv/res_debug.c projects/releng_7_xen/lib/libc/resolv/res_mkquery.c projects/releng_7_xen/lib/libc/resolv/res_query.c projects/releng_7_xen/lib/libc/resolv/res_send.c projects/releng_7_xen/lib/libc/stdio/fread.c projects/releng_7_xen/lib/libthr/ (props changed) projects/releng_7_xen/lib/libthr/thread/thr_rtld.c projects/releng_7_xen/lib/libutil/kinfo_getfile.c projects/releng_7_xen/lib/libutil/kinfo_getvmmap.c projects/releng_7_xen/libexec/ftpd/extern.h projects/releng_7_xen/libexec/ftpd/ftpcmd.y projects/releng_7_xen/libexec/ftpd/ftpd.c projects/releng_7_xen/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/releng_7_xen/share/man/man4/cxgb.4 projects/releng_7_xen/sys/ (props changed) projects/releng_7_xen/sys/amd64/amd64/db_trace.c projects/releng_7_xen/sys/compat/linprocfs/linprocfs.c projects/releng_7_xen/sys/contrib/pf/ (props changed) projects/releng_7_xen/sys/dev/bce/if_bce.c projects/releng_7_xen/sys/dev/bge/if_bge.c projects/releng_7_xen/sys/dev/cxgb/ (props changed) projects/releng_7_xen/sys/dev/dc/if_dc.c projects/releng_7_xen/sys/dev/dc/if_dcreg.h projects/releng_7_xen/sys/dev/mfi/mfi.c projects/releng_7_xen/sys/dev/mfi/mfi_pci.c projects/releng_7_xen/sys/dev/vr/if_vr.c projects/releng_7_xen/sys/fs/nullfs/null_vnops.c projects/releng_7_xen/sys/fs/procfs/procfs_map.c projects/releng_7_xen/sys/fs/unionfs/union.h projects/releng_7_xen/sys/fs/unionfs/union_subr.c projects/releng_7_xen/sys/fs/unionfs/union_vfsops.c projects/releng_7_xen/sys/fs/unionfs/union_vnops.c projects/releng_7_xen/sys/kern/kern_proc.c projects/releng_7_xen/sys/kern/kern_sysctl.c projects/releng_7_xen/sys/kern/uipc_domain.c projects/releng_7_xen/sys/net/if.h projects/releng_7_xen/sys/net/if_vlan.c projects/releng_7_xen/sys/netinet/if_ether.c projects/releng_7_xen/sys/netinet/in_pcb.h projects/releng_7_xen/sys/netinet/tcp_syncache.c projects/releng_7_xen/sys/netinet/tcp_var.h projects/releng_7_xen/sys/nfsserver/nfs_serv.c projects/releng_7_xen/sys/pc98/conf/GENERIC projects/releng_7_xen/sys/ufs/ufs/ufs_quota.c projects/releng_7_xen/usr.bin/ipcs/ (props changed) projects/releng_7_xen/usr.bin/ipcs/ipcs.c projects/releng_7_xen/usr.bin/procstat/procstat_files.c projects/releng_7_xen/usr.bin/procstat/procstat_vm.c projects/releng_7_xen/usr.bin/tar/ (props changed) projects/releng_7_xen/usr.bin/tar/test/Makefile projects/releng_7_xen/usr.bin/tar/util.c projects/releng_7_xen/usr.sbin/fwcontrol/ (props changed) projects/releng_7_xen/usr.sbin/fwcontrol/fwcontrol.8 projects/releng_7_xen/usr.sbin/fwcontrol/fwcontrol.c projects/releng_7_xen/usr.sbin/fwcontrol/fwmpegts.c Modified: projects/releng_7_xen/gnu/usr.bin/groff/tmac/mdoc.local ============================================================================== --- projects/releng_7_xen/gnu/usr.bin/groff/tmac/mdoc.local Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/gnu/usr.bin/groff/tmac/mdoc.local Tue Dec 23 05:00:00 2008 (r186421) @@ -64,10 +64,12 @@ .ds doc-volume-as-arm arm . .\" Default .Os value -.ds doc-default-operating-system FreeBSD\~7.0 +.ds doc-default-operating-system FreeBSD\~7.1 . .\" FreeBSD releases not found in doc-common .ds doc-operating-system-FreeBSD-6.3 6.3 +.ds doc-operating-system-FreeBSD-6.4 6.4 +.ds doc-operating-system-FreeBSD-7.1 7.1 .ds doc-operating-system-FreeBSD-8.0 8.0 . .ec Modified: projects/releng_7_xen/include/arpa/nameser.h ============================================================================== --- projects/releng_7_xen/include/arpa/nameser.h Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/include/arpa/nameser.h Tue Dec 23 05:00:00 2008 (r186421) @@ -49,7 +49,7 @@ */ /* - * $Id: nameser.h,v 1.7.18.1 2005/04/27 05:00:50 sra Exp $ + * $Id: nameser.h,v 1.7.18.2 2008/04/03 23:15:15 marka Exp $ * $FreeBSD$ */ @@ -424,9 +424,10 @@ typedef enum __ns_cert_types { #define NS_NXT_MAX 127 /*% - * EDNS0 extended flags, host order. + * EDNS0 extended flags and option codes, host order. */ #define NS_OPT_DNSSEC_OK 0x8000U +#define NS_OPT_NSID 3 /*% * Inline versions of get/put short/long. Pointer is advanced. Modified: projects/releng_7_xen/include/resolv.h ============================================================================== --- projects/releng_7_xen/include/resolv.h Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/include/resolv.h Tue Dec 23 05:00:00 2008 (r186421) @@ -50,7 +50,7 @@ /*% * @(#)resolv.h 8.1 (Berkeley) 6/2/93 - * $Id: resolv.h,v 1.19.18.3 2005/08/25 04:43:51 marka Exp $ + * $Id: resolv.h,v 1.19.18.4 2008/04/03 23:15:15 marka Exp $ * $FreeBSD$ */ @@ -245,6 +245,7 @@ union res_sockaddr_union { #define RES_NOCHECKNAME 0x00008000 /*%< do not check names for sanity. */ #define RES_KEEPTSIG 0x00010000 /*%< do not strip TSIG records */ #define RES_BLAST 0x00020000 /*%< blast all recursive servers */ +#define RES_NSID 0x00040000 /*%< request name server ID */ #define RES_NOTLDQUERY 0x00100000 /*%< don't unqualified name as a tld */ #define RES_USE_DNSSEC 0x00200000 /*%< use DNSSEC using OK bit in OPT */ /* #define RES_DEBUG2 0x00400000 */ /* nslookup internal */ @@ -386,6 +387,7 @@ extern const struct res_sym __p_rcode_sy #define sym_ntos __sym_ntos #define sym_ston __sym_ston #define res_nopt __res_nopt +#define res_nopt_rdata __res_nopt_rdata #define res_ndestroy __res_ndestroy #define res_nametoclass __res_nametoclass #define res_nametotype __res_nametotype @@ -474,6 +476,8 @@ int res_findzonecut2(res_state, const c union res_sockaddr_union *, int); void res_nclose(res_state); int res_nopt(res_state, int, u_char *, int, int); +int res_nopt_rdata(res_state, int, u_char *, int, u_char *, + u_short, u_short, u_char *); void res_send_setqhook(res_send_qhook); void res_send_setrhook(res_send_rhook); int __res_vinit(res_state, int); Modified: projects/releng_7_xen/lib/libc/include/isc/eventlib.h ============================================================================== --- projects/releng_7_xen/lib/libc/include/isc/eventlib.h Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/include/isc/eventlib.h Tue Dec 23 05:00:00 2008 (r186421) @@ -18,7 +18,7 @@ /* eventlib.h - exported interfaces for eventlib * vix 09sep95 [initial] * - * $Id: eventlib.h,v 1.3.18.2 2005/07/28 07:38:07 marka Exp $ + * $Id: eventlib.h,v 1.3.18.3 2008/01/23 02:12:01 marka Exp $ */ #ifndef _EVENTLIB_H @@ -29,6 +29,8 @@ #include #include +#include + #ifndef __P # define __EVENTLIB_P_DEFINED # ifdef __STDC__ Modified: projects/releng_7_xen/lib/libc/inet/inet_net_pton.c ============================================================================== --- projects/releng_7_xen/lib/libc/inet/inet_net_pton.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/inet/inet_net_pton.c Tue Dec 23 05:00:00 2008 (r186421) @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: inet_net_pton.c,v 1.7.18.1 2005/04/27 05:00:53 sra Exp $"; +static const char rcsid[] = "$Id: inet_net_pton.c,v 1.7.18.2 2008/08/26 04:42:43 marka Exp $"; #endif #include __FBSDID("$FreeBSD$"); @@ -135,11 +135,11 @@ inet_net_pton_ipv4(const char *src, u_ch assert(n >= 0 && n <= 9); bits *= 10; bits += n; + if (bits > 32) + goto enoent; } while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch)); if (ch != '\0') goto enoent; - if (bits > 32) - goto emsgsize; } /* Firey death and destruction unless we prefetched EOS. */ Modified: projects/releng_7_xen/lib/libc/resolv/res_debug.c ============================================================================== --- projects/releng_7_xen/lib/libc/resolv/res_debug.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/resolv/res_debug.c Tue Dec 23 05:00:00 2008 (r186421) @@ -91,7 +91,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char sccsid[] = "@(#)res_debug.c 8.1 (Berkeley) 6/4/93"; -static const char rcsid[] = "$Id: res_debug.c,v 1.10.18.5 2005/07/28 07:38:11 marka Exp $"; +static const char rcsid[] = "$Id: res_debug.c,v 1.10.18.6 2008/04/03 23:15:15 marka Exp $"; #endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$"); @@ -187,10 +187,56 @@ do_section(const res_state statp, p_type(ns_rr_type(rr)), p_class(ns_rr_class(rr))); else if (section == ns_s_ar && ns_rr_type(rr) == ns_t_opt) { + u_int16_t optcode, optlen, rdatalen = ns_rr_rdlen(rr); u_int32_t ttl = ns_rr_ttl(rr); + fprintf(file, "; EDNS: version: %u, udp=%u, flags=%04x\n", (ttl>>16)&0xff, ns_rr_class(rr), ttl&0xffff); + + while (rdatalen >= 4) { + const u_char *cp = ns_rr_rdata(rr); + int i; + + GETSHORT(optcode, cp); + GETSHORT(optlen, cp); + + if (optcode == NS_OPT_NSID) { + fputs("; NSID: ", file); + if (optlen == 0) { + fputs("; NSID\n", file); + } else { + fputs("; NSID: ", file); + for (i = 0; i < optlen; i++) + fprintf(file, "%02x ", + cp[i]); + fputs(" (",file); + for (i = 0; i < optlen; i++) + fprintf(file, "%c", + isprint(cp[i])? + cp[i] : '.'); + fputs(")\n", file); + } + } else { + if (optlen == 0) { + fprintf(file, "; OPT=%u\n", + optcode); + } else { + fprintf(file, "; OPT=%u: ", + optcode); + for (i = 0; i < optlen; i++) + fprintf(file, "%02x ", + cp[i]); + fputs(" (",file); + for (i = 0; i < optlen; i++) + fprintf(file, "%c", + isprint(cp[i]) ? + cp[i] : '.'); + fputs(")\n", file); + } + } + rdatalen -= 4 + optlen; + } } else { n = ns_sprintrr(handle, &rr, NULL, NULL, buf, buflen); @@ -202,7 +248,7 @@ do_section(const res_state statp, buf = malloc(buflen += 1024); if (buf == NULL) { fprintf(file, - ";; memory allocation failure\n"); + ";; memory allocation failure\n"); return; } continue; @@ -379,7 +425,7 @@ static const struct res_sym __p_default_ {ns_s_an, "ANSWER", (char *)0}, {ns_s_ns, "AUTHORITY", (char *)0}, {ns_s_ar, "ADDITIONAL", (char *)0}, - {0, (char *)0, (char *)0} + {0, (char *)0, (char *)0} }; static const struct res_sym __p_update_section_syms[] = { @@ -387,7 +433,7 @@ static const struct res_sym __p_update_s {S_PREREQ, "PREREQUISITE", (char *)0}, {S_UPDATE, "UPDATE", (char *)0}, {S_ADDT, "ADDITIONAL", (char *)0}, - {0, (char *)0, (char *)0} + {0, (char *)0, (char *)0} }; const struct res_sym __p_key_syms[] = { @@ -615,6 +661,7 @@ p_option(u_long option) { case RES_USE_INET6: return "inet6"; #ifdef RES_USE_EDNS0 /*%< KAME extension */ case RES_USE_EDNS0: return "edns0"; + case RES_NSID: return "nsid"; #endif #ifdef RES_USE_DNAME case RES_USE_DNAME: return "dname"; Modified: projects/releng_7_xen/lib/libc/resolv/res_mkquery.c ============================================================================== --- projects/releng_7_xen/lib/libc/resolv/res_mkquery.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/resolv/res_mkquery.c Tue Dec 23 05:00:00 2008 (r186421) @@ -66,7 +66,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char sccsid[] = "@(#)res_mkquery.c 8.1 (Berkeley) 6/4/93"; -static const char rcsid[] = "$Id: res_mkquery.c,v 1.5.18.1 2005/04/27 05:01:11 sra Exp $"; +static const char rcsid[] = "$Id: res_mkquery.c,v 1.5.18.2 2008/04/03 23:15:15 marka Exp $"; #endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$"); @@ -201,9 +201,6 @@ res_nmkquery(res_state statp, #ifdef RES_USE_EDNS0 /* attach OPT pseudo-RR, as documented in RFC2671 (EDNS0). */ -#ifndef T_OPT -#define T_OPT 41 -#endif int res_nopt(res_state statp, @@ -228,15 +225,16 @@ res_nopt(res_state statp, if ((ep - cp) < 1 + RRFIXEDSZ) return (-1); - *cp++ = 0; /*%< "." */ - ns_put16(T_OPT, cp); /*%< TYPE */ + *cp++ = 0; /*%< "." */ + ns_put16(ns_t_opt, cp); /*%< TYPE */ cp += INT16SZ; if (anslen > 0xffff) anslen = 0xffff; /* limit to 16bit value */ - ns_put16(anslen & 0xffff, cp); /*%< CLASS = UDP payload size */ + ns_put16(anslen & 0xffff, cp); /*%< CLASS = UDP payload size */ cp += INT16SZ; - *cp++ = NOERROR; /*%< extended RCODE */ - *cp++ = 0; /*%< EDNS version */ + *cp++ = NOERROR; /*%< extended RCODE */ + *cp++ = 0; /*%< EDNS version */ + if (statp->options & RES_USE_DNSSEC) { #ifdef DEBUG if (statp->options & RES_DEBUG) @@ -246,12 +244,60 @@ res_nopt(res_state statp, } ns_put16(flags, cp); cp += INT16SZ; - ns_put16(0, cp); /*%< RDLEN */ + + ns_put16(0U, cp); /*%< RDLEN */ cp += INT16SZ; + hp->arcount = htons(ntohs(hp->arcount) + 1); return (cp - buf); } + +/* + * Construct variable data (RDATA) block for OPT psuedo-RR, append it + * to the buffer, then update the RDLEN field (previously set to zero by + * res_nopt()) with the new RDATA length. + */ +int +res_nopt_rdata(res_state statp, + int n0, /*%< current offset in buffer */ + u_char *buf, /*%< buffer to put query */ + int buflen, /*%< size of buffer */ + u_char *rdata, /*%< ptr to start of opt rdata */ + u_short code, /*%< OPTION-CODE */ + u_short len, /*%< OPTION-LENGTH */ + u_char *data) /*%< OPTION_DATA */ +{ + register u_char *cp, *ep; + +#ifdef DEBUG + if ((statp->options & RES_DEBUG) != 0U) + printf(";; res_nopt_rdata()\n"); +#endif + + cp = buf + n0; + ep = buf + buflen; + + if ((ep - cp) < (4 + len)) + return (-1); + + if (rdata < (buf + 2) || rdata >= ep) + return (-1); + + ns_put16(code, cp); + cp += INT16SZ; + + ns_put16(len, cp); + cp += INT16SZ; + + memcpy(cp, data, len); + cp += len; + + len = cp - rdata; + ns_put16(len, rdata - 2); /* Update RDLEN field */ + + return (cp - buf); +} #endif /*! \file */ Modified: projects/releng_7_xen/lib/libc/resolv/res_query.c ============================================================================== --- projects/releng_7_xen/lib/libc/resolv/res_query.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/resolv/res_query.c Tue Dec 23 05:00:00 2008 (r186421) @@ -66,7 +66,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char sccsid[] = "@(#)res_query.c 8.1 (Berkeley) 6/4/93"; -static const char rcsid[] = "$Id: res_query.c,v 1.7.18.1 2005/04/27 05:01:11 sra Exp $"; +static const char rcsid[] = "$Id: res_query.c,v 1.7.18.2 2008/04/03 23:15:15 marka Exp $"; #endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$"); @@ -115,8 +115,9 @@ res_nquery(res_state statp, { u_char buf[MAXPACKET]; HEADER *hp = (HEADER *) answer; - int n; u_int oflags; + u_char *rdata; + int n; oflags = statp->_flags; @@ -131,8 +132,14 @@ again: buf, sizeof(buf)); #ifdef RES_USE_EDNS0 if (n > 0 && (statp->_flags & RES_F_EDNS0ERR) == 0 && - (statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC)) != 0U) + (statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC|RES_NSID))) { n = res_nopt(statp, n, buf, sizeof(buf), anslen); + rdata = &buf[n]; + if (n > 0 && (statp->options & RES_NSID) != 0U) { + n = res_nopt_rdata(statp, n, buf, sizeof(buf), rdata, + NS_OPT_NSID, 0, NULL); + } + } #endif if (n <= 0) { #ifdef DEBUG @@ -142,6 +149,7 @@ again: RES_SET_H_ERRNO(statp, NO_RECOVERY); return (n); } + n = res_nsend(statp, buf, n, answer, anslen); if (n < 0) { #ifdef RES_USE_EDNS0 Modified: projects/releng_7_xen/lib/libc/resolv/res_send.c ============================================================================== --- projects/releng_7_xen/lib/libc/resolv/res_send.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/resolv/res_send.c Tue Dec 23 05:00:00 2008 (r186421) @@ -66,7 +66,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char sccsid[] = "@(#)res_send.c 8.1 (Berkeley) 6/4/93"; -static const char rcsid[] = "$Id: res_send.c,v 1.9.18.8 2006/10/16 23:00:58 marka Exp $"; +static const char rcsid[] = "$Id: res_send.c,v 1.9.18.10 2008/01/27 02:06:26 marka Exp $"; #endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$"); @@ -302,7 +302,7 @@ int res_nsend(res_state statp, const u_char *buf, int buflen, u_char *ans, int anssiz) { - int gotsomewhere, terrno, try, v_circuit, resplen, ns, n; + int gotsomewhere, terrno, tries, v_circuit, resplen, ns, n; #ifdef USE_KQUEUE int kq; #endif @@ -420,7 +420,7 @@ res_nsend(res_state statp, /* * Send request, RETRY times, or until successful. */ - for (try = 0; try < statp->retry; try++) { + for (tries = 0; tries < statp->retry; tries++) { for (ns = 0; ns < statp->nscount; ns++) { struct sockaddr *nsap; int nsaplen; @@ -471,7 +471,7 @@ res_nsend(res_state statp, if (v_circuit) { /* Use VC; at most one attempt per server. */ - try = statp->retry; + tries = statp->retry; n = send_vc(statp, buf, buflen, ans, anssiz, &terrno, ns); if (n < 0) @@ -486,7 +486,7 @@ res_nsend(res_state statp, kq, #endif buf, buflen, ans, anssiz, &terrno, - ns, try, &v_circuit, &gotsomewhere); + ns, tries, &v_circuit, &gotsomewhere); if (n < 0) goto fail; if (n == 0) @@ -632,6 +632,9 @@ send_vc(res_state statp, u_short len; u_char *cp; void *tmp; +#ifdef SO_NOSIGPIPE + int on = 1; +#endif nsap = get_nsaddr(statp, ns); nsaplen = get_salen(nsap); @@ -679,6 +682,17 @@ send_vc(res_state statp, return (-1); } } +#ifdef SO_NOSIGPIPE + /* + * Disable generation of SIGPIPE when writing to a closed + * socket. Write should return -1 and set errno to EPIPE + * instead. + * + * Push on even if setsockopt(SO_NOSIGPIPE) fails. + */ + (void)_setsockopt(statp->_vcsock, SOL_SOCKET, SO_NOSIGPIPE, &on, + sizeof(on)); +#endif errno = 0; if (_connect(statp->_vcsock, nsap, nsaplen) < 0) { *terrno = errno; @@ -811,7 +825,7 @@ send_dg(res_state statp, int kq, #endif const u_char *buf, int buflen, u_char *ans, - int anssiz, int *terrno, int ns, int try, int *v_circuit, + int anssiz, int *terrno, int ns, int tries, int *v_circuit, int *gotsomewhere) { const HEADER *hp = (const HEADER *) buf; @@ -915,7 +929,7 @@ send_dg(res_state statp, /* * Wait for reply. */ - seconds = (statp->retrans << try); + seconds = (statp->retrans << tries); if (ns > 0) seconds /= statp->nscount; if (seconds <= 0) Modified: projects/releng_7_xen/lib/libc/stdio/fread.c ============================================================================== --- projects/releng_7_xen/lib/libc/stdio/fread.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libc/stdio/fread.c Tue Dec 23 05:00:00 2008 (r186421) @@ -50,7 +50,7 @@ __FBSDID("$FreeBSD$"); size_t fread(void * __restrict buf, size_t size, size_t count, FILE * __restrict fp) { - int ret; + size_t ret; FLOCKFILE(fp); ret = __fread(buf, size, count, fp); Modified: projects/releng_7_xen/lib/libthr/thread/thr_rtld.c ============================================================================== --- projects/releng_7_xen/lib/libthr/thread/thr_rtld.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libthr/thread/thr_rtld.c Tue Dec 23 05:00:00 2008 (r186421) @@ -214,7 +214,7 @@ _thr_rtld_init(void) { struct RtldLockInfo li; struct pthread *curthread; - long dummy; + long dummy = -1; curthread = _get_curthread(); Modified: projects/releng_7_xen/lib/libutil/kinfo_getfile.c ============================================================================== --- projects/releng_7_xen/lib/libutil/kinfo_getfile.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libutil/kinfo_getfile.c Tue Dec 23 05:00:00 2008 (r186421) @@ -19,6 +19,7 @@ kinfo_getfile(pid_t pid, int *cntp) char *buf, *bp, *eb; struct kinfo_file *kif, *kp, *kf; + *cntp = 0; len = 0; mib[0] = CTL_KERN; mib[1] = KERN_PROC; @@ -27,15 +28,15 @@ kinfo_getfile(pid_t pid, int *cntp) error = sysctl(mib, 4, NULL, &len, NULL, 0); if (error) - return (0); + return (NULL); len = len * 4 / 3; buf = malloc(len); if (buf == NULL) - return (0); + return (NULL); error = sysctl(mib, 4, buf, &len, NULL, 0); if (error) { free(buf); - return (0); + return (NULL); } /* Pass 1: count items */ cnt = 0; @@ -50,7 +51,7 @@ kinfo_getfile(pid_t pid, int *cntp) kif = calloc(cnt, sizeof(*kif)); if (kif == NULL) { free(buf); - return (0); + return (NULL); } bp = buf; eb = buf + len; Modified: projects/releng_7_xen/lib/libutil/kinfo_getvmmap.c ============================================================================== --- projects/releng_7_xen/lib/libutil/kinfo_getvmmap.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/lib/libutil/kinfo_getvmmap.c Tue Dec 23 05:00:00 2008 (r186421) @@ -19,6 +19,7 @@ kinfo_getvmmap(pid_t pid, int *cntp) char *buf, *bp, *eb; struct kinfo_vmentry *kiv, *kp, *kv; + *cntp = 0; len = 0; mib[0] = CTL_KERN; mib[1] = KERN_PROC; @@ -27,15 +28,15 @@ kinfo_getvmmap(pid_t pid, int *cntp) error = sysctl(mib, 4, NULL, &len, NULL, 0); if (error) - return (0); + return (NULL); len = len * 4 / 3; buf = malloc(len); if (buf == NULL) - return (0); + return (NULL); error = sysctl(mib, 4, buf, &len, NULL, 0); if (error) { free(buf); - return (0); + return (NULL); } /* Pass 1: count items */ cnt = 0; @@ -50,7 +51,7 @@ kinfo_getvmmap(pid_t pid, int *cntp) kiv = calloc(cnt, sizeof(*kiv)); if (kiv == NULL) { free(buf); - return (0); + return (NULL); } bp = buf; eb = buf + len; Modified: projects/releng_7_xen/libexec/ftpd/extern.h ============================================================================== --- projects/releng_7_xen/libexec/ftpd/extern.h Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/libexec/ftpd/extern.h Tue Dec 23 05:00:00 2008 (r186421) @@ -46,7 +46,7 @@ void fatalerror(char *); void ftpd_logwtmp(char *, char *, struct sockaddr *addr); int ftpd_pclose(FILE *); FILE *ftpd_popen(char *, char *); -char *getline(char *, int, FILE *); +int getline(char *, int, FILE *); void lreply(int, const char *, ...) __printflike(2, 3); void makedir(char *); void nack(char *); Modified: projects/releng_7_xen/libexec/ftpd/ftpcmd.y ============================================================================== --- projects/releng_7_xen/libexec/ftpd/ftpcmd.y Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/libexec/ftpd/ftpcmd.y Tue Dec 23 05:00:00 2008 (r186421) @@ -1191,7 +1191,7 @@ lookup(struct tab *p, char *cmd) /* * getline - a hacked up version of fgets to ignore TELNET escape codes. */ -char * +int getline(char *s, int n, FILE *iop) { int c; @@ -1207,7 +1207,7 @@ getline(char *s, int n, FILE *iop) if (ftpdebug) syslog(LOG_DEBUG, "command: %s", s); tmpline[0] = '\0'; - return(s); + return(0); } if (c == 0) tmpline[0] = '\0'; @@ -1244,13 +1244,24 @@ getline(char *s, int n, FILE *iop) } } *cs++ = c; - if (--n <= 0 || c == '\n') + if (--n <= 0) { + /* + * If command doesn't fit into buffer, discard the + * rest of the command and indicate truncation. + * This prevents the command to be split up into + * multiple commands. + */ + while (c != '\n' && (c = getc(iop)) != EOF) + ; + return (-2); + } + if (c == '\n') break; } got_eof: sigprocmask(SIG_SETMASK, &osset, NULL); if (c == EOF && cs == s) - return (NULL); + return (-1); *cs++ = '\0'; if (ftpdebug) { if (!guest && strncasecmp("pass ", s, 5) == 0) { @@ -1270,7 +1281,7 @@ got_eof: syslog(LOG_DEBUG, "command: %.*s", len, s); } } - return (s); + return (0); } static void @@ -1300,9 +1311,14 @@ yylex(void) case CMD: (void) signal(SIGALRM, toolong); (void) alarm(timeout); - if (getline(cbuf, sizeof(cbuf)-1, stdin) == NULL) { + n = getline(cbuf, sizeof(cbuf)-1, stdin); + if (n == -1) { reply(221, "You could at least say goodbye."); dologout(0); + } else if (n == -2) { + reply(500, "Command too long."); + (void) alarm(0); + continue; } (void) alarm(0); #ifdef SETPROCTITLE Modified: projects/releng_7_xen/libexec/ftpd/ftpd.c ============================================================================== --- projects/releng_7_xen/libexec/ftpd/ftpd.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/libexec/ftpd/ftpd.c Tue Dec 23 05:00:00 2008 (r186421) @@ -2794,15 +2794,20 @@ static int myoob(void) { char *cp; + int ret; if (!transflag) { syslog(LOG_ERR, "Internal: myoob() while no transfer"); return (0); } cp = tmpline; - if (getline(cp, 7, stdin) == NULL) { + ret = getline(cp, 7, stdin); + if (ret == -1) { reply(221, "You could at least say goodbye."); dologout(0); + } else if (ret == -2) { + /* Ignore truncated command. */ + return (0); } upper(cp); if (strcmp(cp, "ABOR\r\n") == 0) { Modified: projects/releng_7_xen/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- projects/releng_7_xen/release/doc/en_US.ISO8859-1/hardware/article.sgml Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/release/doc/en_US.ISO8859-1/hardware/article.sgml Tue Dec 23 05:00:00 2008 (r186421) @@ -92,21 +92,40 @@ - &intel; 64-bit &xeon; (Nocona). - This processor is fabricated on 90nm process technology, and operates - with 2.80 to 3.60 GHz (FSB 800MHz) and &intel; E7520/E7525/E7320 chipsets. + All multi-core &intel; &xeon; processors except + Sossaman have EM64T support. - &intel; &pentium; 4 Processor supporting &intel; EM64T - (Prescott). - This is fabricated on 90nm process technology, - uses FC-LGA775 package, and operates with 3.20F/3.40F/3.60F GHz - and &intel; 925X Express chipsets. - The corresponding S-Spec numbers are SL7L9, SL7L8, SL7LA, SL7NZ, SL7PZ, - and SL7PX. Note that processors marked as 5xx numbers do not support - EM64T. + The single-core &intel; &xeon; + processors Nocona, Irwindale, + Potomac, and Cranford have + EM64T support. + + + All &intel; Core 2 (not Core Duo) and later + processors + + + + All &intel; &pentium; D processors + + + + &intel; &pentium; 4s and Celeron Ds using + the Cedar Mill core have EM64T + support. + + + + Some &intel; &pentium; 4s and Celeron Ds using + the Prescott core have EM64T support. See + the Intel + Processor Spec Finder for the definitive answer about + EM64T support in Intel processors. + + &intel; EM64T is an extended version of IA-32 (x86) and @@ -115,7 +134,7 @@ 64-bit extension technology or IA-32e. The largest tested - memory configuration to date is 8GB. SMP support has been + memory configuration to date is 32GB. SMP support has been recently completed and is reasonably robust. In many respects, &os;/&arch.amd64; is similar to &os;/&arch.i386;, in Modified: projects/releng_7_xen/share/man/man4/cxgb.4 ============================================================================== --- projects/releng_7_xen/share/man/man4/cxgb.4 Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/share/man/man4/cxgb.4 Tue Dec 23 05:00:00 2008 (r186421) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2007, Chelsio Inc +.\" Copyright (c) 2007-2008, Chelsio Inc .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -56,7 +56,8 @@ if_cxgb_load="YES" The .Nm driver supports Transmit/Receive checksum offload, -Jumbo Frames as well as TCP segmentation offload (TSO). +Jumbo Frames, TCP segmentation offload (TSO), Large Receive Offload (LRO), +VLAN hardware insertion / extraction, and VLAN checksum offload. For further hardware information, see .Pa http://www.chelsio.com/ . .Pp @@ -76,7 +77,7 @@ For more information on configuring this .Sh HARDWARE The .Nm -driver supports 10 Gigabit Ethernet adapters based on the T3 and T3B chipset: +driver supports 10 Gigabit and 1 Gigabit Ethernet adapters based on the T3 and T3B chipset: .Pp .Bl -bullet -compact .It @@ -111,7 +112,7 @@ go to the Chelsio support website at: If an issue is identified with the released source code on the supported kernel with a supported adapter, email the specific information related to the issue to -.Aq help@chelsio.com . +.Aq support@chelsio.com . .Sh SEE ALSO .Xr altq 4 , .Xr arp 4 , Modified: projects/releng_7_xen/sys/amd64/amd64/db_trace.c ============================================================================== --- projects/releng_7_xen/sys/amd64/amd64/db_trace.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/sys/amd64/amd64/db_trace.c Tue Dec 23 05:00:00 2008 (r186421) @@ -27,6 +27,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_compat.h" + #include #include #include @@ -318,6 +320,10 @@ db_nextframe(struct amd64_frame **fp, db frame_type = INTERRUPT; else if (strcmp(name, "Xfast_syscall") == 0) frame_type = SYSCALL; +#ifdef COMPAT_IA32 + else if (strcmp(name, "Xint0x80_syscall") == 0) + frame_type = SYSCALL; +#endif /* XXX: These are interrupts with trap frames. */ else if (strcmp(name, "Xtimerint") == 0 || strcmp(name, "Xcpustop") == 0 || Modified: projects/releng_7_xen/sys/compat/linprocfs/linprocfs.c ============================================================================== --- projects/releng_7_xen/sys/compat/linprocfs/linprocfs.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/sys/compat/linprocfs/linprocfs.c Tue Dec 23 05:00:00 2008 (r186421) @@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -269,8 +270,7 @@ linprocfs_docpuinfo(PFS_FILL_ARGS) /* XXX per-cpu vendor / class / model / id? */ } - sbuf_cat(sb, - "flags\t\t:"); + sbuf_cat(sb, "flags\t\t:"); if (!strcmp(cpu_vendor, "AuthenticAMD") && (class < 6)) { flags[16] = "fcmov"; @@ -869,11 +869,14 @@ linprocfs_doprocenviron(PFS_FILL_ARGS) static int linprocfs_doprocmaps(PFS_FILL_ARGS) { - vm_map_t map = &p->p_vmspace->vm_map; - vm_map_entry_t entry; + struct vmspace *vm; + vm_map_t map; + vm_map_entry_t entry, tmp_entry; vm_object_t obj, tobj, lobj; - vm_offset_t saved_end; + vm_offset_t e_start, e_end; vm_ooffset_t off = 0; + vm_prot_t e_prot; + unsigned int last_timestamp; char *name = "", *freename = NULL; ino_t ino; int ref_count, shadow_count, flags; @@ -892,6 +895,10 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) return (EOPNOTSUPP); error = 0; + vm = vmspace_acquire_ref(p); + if (vm == NULL) + return (ESRCH); + map = &vm->vm_map; vm_map_lock_read(map); for (entry = map->header.next; entry != &map->header; entry = entry->next) { @@ -899,7 +906,9 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) freename = NULL; if (entry->eflags & MAP_ENTRY_IS_SUB_MAP) continue; - saved_end = entry->end; + e_prot = entry->protection; + e_start = entry->start; + e_end = entry->end; obj = entry->object.vm_object; for (lobj = tobj = obj; tobj; tobj = tobj->backing_object) { VM_OBJECT_LOCK(tobj); @@ -907,6 +916,8 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) VM_OBJECT_UNLOCK(lobj); lobj = tobj; } + last_timestamp = map->timestamp; + vm_map_unlock_read(map); ino = 0; if (lobj) { off = IDX_TO_OFF(lobj->size); @@ -944,10 +955,10 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) */ error = sbuf_printf(sb, "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n", - (u_long)entry->start, (u_long)entry->end, - (entry->protection & VM_PROT_READ)?"r":"-", - (entry->protection & VM_PROT_WRITE)?"w":"-", - (entry->protection & VM_PROT_EXECUTE)?"x":"-", + (u_long)e_start, (u_long)e_end, + (e_prot & VM_PROT_READ)?"r":"-", + (e_prot & VM_PROT_WRITE)?"w":"-", + (e_prot & VM_PROT_EXECUTE)?"x":"-", "p", (u_long)off, 0, @@ -958,12 +969,23 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) ); if (freename) free(freename, M_TEMP); + vm_map_lock_read(map); if (error == -1) { error = 0; break; } + if (last_timestamp + 1 != map->timestamp) { + /* + * Look again for the entry because the map was + * modified while it was unlocked. Specifically, + * the entry may have been clipped, merged, or deleted. + */ + vm_map_lookup_entry(map, e_end - 1, &tmp_entry); + entry = tmp_entry; + } } vm_map_unlock_read(map); + vmspace_free(vm); return (error); } Modified: projects/releng_7_xen/sys/dev/bce/if_bce.c ============================================================================== --- projects/releng_7_xen/sys/dev/bce/if_bce.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/sys/dev/bce/if_bce.c Tue Dec 23 05:00:00 2008 (r186421) @@ -5114,7 +5114,7 @@ bce_free_tx_chain(struct bce_softc *sc) /* Unmap, unload, and free any mbufs still in the TX mbuf chain. */ for (i = 0; i < TOTAL_TX_BD; i++) { if (sc->tx_mbuf_ptr[i] != NULL) { - if (sc->tx_mbuf_map != NULL) + if (sc->tx_mbuf_map[i] != NULL) bus_dmamap_sync(sc->tx_mbuf_tag, sc->tx_mbuf_map[i], BUS_DMASYNC_POSTWRITE); m_freem(sc->tx_mbuf_ptr[i]); @@ -7408,7 +7408,6 @@ bce_stats_update(struct bce_softc *sc) (u_long) sc->stat_IfInMBUFDiscards + (u_long) sc->stat_Dot3StatsAlignmentErrors + (u_long) sc->stat_Dot3StatsFCSErrors + - (u_long) sc->stat_IfInFramesL2FilterDiscards + (u_long) sc->stat_IfInRuleCheckerDiscards + (u_long) sc->stat_IfInFTQDiscards + (u_long) sc->com_no_buffers; Modified: projects/releng_7_xen/sys/dev/bge/if_bge.c ============================================================================== --- projects/releng_7_xen/sys/dev/bge/if_bge.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/sys/dev/bge/if_bge.c Tue Dec 23 05:00:00 2008 (r186421) @@ -1370,6 +1370,16 @@ bge_chipinit(struct bge_softc *sc) BGE_MODECTL_TX_NO_PHDR_CSUM); /* + * BCM5701 B5 have a bug causing data corruption when using + * 64-bit DMA reads, which can be terminated early and then + * completed later as 32-bit accesses, in combination with + * certain bridges. + */ + if (sc->bge_asicrev == BGE_ASICREV_BCM5701 && + sc->bge_chipid == BGE_CHIPID_BCM5701_B5) + BGE_SETBIT(sc, BGE_MODE_CTL, BGE_MODECTL_FORCE_PCI32); + + /* * Tell the firmware the driver is running */ if (sc->bge_asf_mode & ASF_STACKUP) @@ -2465,26 +2475,21 @@ bge_attach(device_t dev) */ if (reg != 0) sc->bge_flags |= BGE_FLAG_PCIE; - } else if (pci_find_extcap(dev, PCIY_PCIX, ®) == 0) { - if (reg != 0) - sc->bge_flags |= BGE_FLAG_PCIX; - } - #else if (BGE_IS_5705_PLUS(sc)) { reg = pci_read_config(dev, BGE_PCIE_CAPID_REG, 4); if ((reg & 0xFF) == BGE_PCIE_CAPID) sc->bge_flags |= BGE_FLAG_PCIE; +#endif } else { /* * Check if the device is in PCI-X Mode. * (This bit is not valid on PCI Express controllers.) */ - if ((pci_read_config(sc->bge_dev, BGE_PCI_PCISTATE, 4) & + if ((pci_read_config(dev, BGE_PCI_PCISTATE, 4) & BGE_PCISTATE_PCI_BUSMODE) == 0) sc->bge_flags |= BGE_FLAG_PCIX; } -#endif #if __FreeBSD_version > 602105 { Modified: projects/releng_7_xen/sys/dev/dc/if_dc.c ============================================================================== --- projects/releng_7_xen/sys/dev/dc/if_dc.c Tue Dec 23 04:51:46 2008 (r186420) +++ projects/releng_7_xen/sys/dev/dc/if_dc.c Tue Dec 23 05:00:00 2008 (r186421) @@ -607,15 +607,22 @@ dc_read_eeprom(struct dc_softc *sc, cadd static void dc_mii_writebit(struct dc_softc *sc, int bit) { + uint32_t reg; - if (bit) - CSR_WRITE_4(sc, DC_SIO, - DC_SIO_ROMCTL_WRITE | DC_SIO_MII_DATAOUT); - else - CSR_WRITE_4(sc, DC_SIO, DC_SIO_ROMCTL_WRITE); - - DC_SETBIT(sc, DC_SIO, DC_SIO_MII_CLK); - DC_CLRBIT(sc, DC_SIO, DC_SIO_MII_CLK); + reg = DC_SIO_ROMCTL_WRITE | (bit != 0 ? DC_SIO_MII_DATAOUT : 0); + CSR_WRITE_4(sc, DC_SIO, reg); + CSR_BARRIER_4(sc, DC_SIO, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); + DELAY(1); + + CSR_WRITE_4(sc, DC_SIO, reg | DC_SIO_MII_CLK); + CSR_BARRIER_4(sc, DC_SIO, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); + DELAY(1); + CSR_WRITE_4(sc, DC_SIO, reg); + CSR_BARRIER_4(sc, DC_SIO, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); + DELAY(1); } *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***