svn commit: r414422 - in head/www: . squid-devel squid-devel/files

Matthew Seaman matthew at FreeBSD.org
Sun May 1 20:27:59 UTC 2016


Author: matthew
Date: Sun May  1 20:27:56 2016
New Revision: 414422
URL: https://svnweb.freebsd.org/changeset/ports/414422

Log:
  Squid is a fully-featured HTTP/1.0 proxy which is almost (but not quite)
  HTTP/1.1 compliant. Squid offers a rich access control, authorization and
  logging environment to develop web proxy and content serving applications.
  
  WWW: http://www.squid-cache.org/
  
  PR:		203860
  Submitted by:	timp87 at gmail.com

Added:
  head/www/squid-devel/
  head/www/squid-devel/Makefile   (contents, props changed)
  head/www/squid-devel/distinfo   (contents, props changed)
  head/www/squid-devel/files/
  head/www/squid-devel/files/extra-patch-build-8-9   (contents, props changed)
  head/www/squid-devel/files/extra-patch-gen-stacktrace   (contents, props changed)
  head/www/squid-devel/files/patch-compat_compat.h   (contents, props changed)
  head/www/squid-devel/files/patch-compat_shm.cc   (contents, props changed)
  head/www/squid-devel/files/patch-configure   (contents, props changed)
  head/www/squid-devel/files/patch-src-cf.data.pre   (contents, props changed)
  head/www/squid-devel/files/patch-src_DiskIO_Mmapped_MmappedFile.cc   (contents, props changed)
  head/www/squid-devel/files/patch-src__ip__Intercept.cc   (contents, props changed)
  head/www/squid-devel/files/patch-src_adaptation_ecap_ServiceRep.cc   (contents, props changed)
  head/www/squid-devel/files/patch-src_ipc_mem_Segment.cc   (contents, props changed)
  head/www/squid-devel/files/patch-src_tools.cc   (contents, props changed)
  head/www/squid-devel/files/pkg-install.in   (contents, props changed)
  head/www/squid-devel/files/pkg-message.in   (contents, props changed)
  head/www/squid-devel/files/squid.in   (contents, props changed)
  head/www/squid-devel/pkg-descr   (contents, props changed)
  head/www/squid-devel/pkg-plist   (contents, props changed)
Modified:
  head/www/Makefile

Modified: head/www/Makefile
==============================================================================
--- head/www/Makefile	Sun May  1 19:59:13 2016	(r414421)
+++ head/www/Makefile	Sun May  1 20:27:56 2016	(r414422)
@@ -2083,6 +2083,7 @@
     SUBDIR += spreadlogd
     SUBDIR += sqstat
     SUBDIR += squid
+    SUBDIR += squid-devel
     SUBDIR += squid_radius_auth
     SUBDIR += squidanalyzer
     SUBDIR += squidclamav

Added: head/www/squid-devel/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/Makefile	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,378 @@
+# $FreeBSD$
+
+PORTNAME=	squid
+PORTVERSION=	4.0.9
+CATEGORIES=	www ipv6
+MASTER_SITES=	http://www.squid-cache.org/Versions/v4/ \
+		http://www2.us.squid-cache.org/Versions/v4/ \
+		http://www1.at.squid-cache.org/Versions/v4/ \
+		http://www.eu.squid-cache.org/Versions/v4/ \
+		http://www1.jp.squid-cache.org/Versions/v4/
+PKGNAMESUFFIX=	-devel
+DIST_SUBDIR=	squid${PORTVERSION:R}
+
+PATCH_SITES=	http://www.squid-cache.org/%SUBDIR%/ \
+		http://www2.us.squid-cache.org/%SUBDIR%/ \
+		http://www1.at.squid-cache.org/%SUBDIR%/ \
+		http://www.eu.squid-cache.org/%SUBDIR%/ \
+		http://www1.jp.squid-cache.org/%SUBDIR%/ \
+		http://master.squid-cache.org/~amosjeffries/patches/:nosid
+PATCH_SITE_SUBDIR=	Versions/v4/changesets
+#PATCHFILES=
+
+MAINTAINER=	timp87 at gmail.com
+COMMENT=	HTTP Caching Proxy
+
+LICENSE=	GPLv2
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+CONFLICTS=	squid*-3.*
+
+USES=		compiler:c++11-lang cpe perl5 shebangfix tar:xz
+CPE_VENDOR=	squid-cache
+SHEBANG_FILES=	scripts/*.pl contrib/*.pl tools/*.pl
+GNU_CONFIGURE=	yes
+USE_RC_SUBR=	squid
+
+USERS=		squid
+GROUPS=		squid
+
+MYDOCS=		QUICKSTART README RELEASENOTES.html doc/debug-sections.txt
+PORTDOCS=	${MYDOCS:T}
+PORTEXAMPLES=	*
+SUB_FILES+=	pkg-install pkg-message
+
+OPTIONS_SUB=	yes
+OPTIONS_GROUP=	AUTH
+OPTIONS_RADIO=	FW
+OPTIONS_GROUP_AUTH=AUTH_LDAP AUTH_NIS AUTH_SASL AUTH_SMB AUTH_SQL
+OPTIONS_RADIO_FW=TP_IPF TP_IPFW TP_PF
+OPTIONS_DEFINE=	ARP_ACL CACHE_DIGESTS DEBUG DELAY_POOLS ECAP ESI \
+		FOLLOW_XFF FS_AUFS FS_DISKD FS_ROCK HTCP ICAP ICMP IDENT IPV6 \
+		KQUEUE LARGEFILE NETTLE SNMP SSL SSL_CRTD STACKTRACES LAX_HTTP \
+		VIA_DB WCCP WCCPV2 DOCS EXAMPLES
+
+OPTIONS_SINGLE=	GSSAPI
+OPTIONS_SINGLE_GSSAPI=	GSSAPI_NONE GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT
+
+OPTIONS_DEFAULT=ARP_ACL AUTH_NIS CACHE_DIGESTS DELAY_POOLS DOCS EXAMPLES FOLLOW_XFF \
+		FS_AUFS FS_DISKD FS_ROCK HTCP ICAP ICMP IDENT IPV6 KQUEUE LARGEFILE \
+		LAX_HTTP SNMP SSL SSL_CRTD TP_IPFW VIA_DB WCCP WCCPV2 GSSAPI_BASE
+
+ARP_ACL_CONFIGURE_ENABLE=	eui
+AUTH_LDAP_CFLAGS=		-I${LOCALBASE}/include
+AUTH_LDAP_LDFLAGS=		-L${LOCALBASE}/lib
+AUTH_LDAP_USE=			OPENLDAP=yes
+AUTH_SASL_CFLAGS=		-I${LOCALBASE}/include
+AUTH_SASL_CPPFLAGS=		-I${LOCALBASE}/include
+AUTH_SASL_LDFLAGS=		-L${LOCALBASE}/lib
+AUTH_SASL_LIB_DEPENDS=		libsasl2.so:security/cyrus-sasl2
+AUTH_SMB_RUN_DEPENDS=		smbclient:net/samba42
+AUTH_SQL_RUN_DEPENDS=		p5-DBI>=1.08:databases/p5-DBI
+CACHE_DIGESTS_CONFIGURE_ENABLE=	cache-digests
+DELAY_POOLS_CONFIGURE_ENABLE=	delay-pools
+ECAP_CFLAGS=			-I${LOCALBASE}/include
+ECAP_CONFIGURE_ENABLE=		ecap
+ECAP_LDFLAGS=			-L${LOCALBASE}/lib
+ECAP_LIB_DEPENDS=		libecap.so:www/libecap
+ECAP_USES=			pkgconfig:build
+ESI_CFLAGS=			-I${LOCALBASE}/include -I${LOCALBASE}/include/libxml2
+ESI_CONFIGURE_ENABLE=		esi
+ESI_LDFLAGS=			-L${LOCALBASE}/lib
+ESI_LIB_DEPENDS=		libexpat.so:textproc/expat2 \
+				libxml2.so:textproc/libxml2
+FOLLOW_XFF_CONFIGURE_ENABLE=	follow-x-forwarded-for
+HTCP_CONFIGURE_ENABLE=		htcp
+ICAP_CONFIGURE_ENABLE=		icap-client
+ICMP_CONFIGURE_ENABLE=		icmp
+IDENT_CONFIGURE_ENABLE=		ident-lookups
+IPV6_CONFIGURE_ENABLE=		ipv6
+KQUEUE_CONFIGURE_ENABLE=	kqueue
+LARGEFILE_CONFIGURE_WITH=	large-files
+LAX_HTTP_CONFIGURE_ENABLE=	http-violations
+NETTLE_LIB_DEPENDS=		libnettle.so:security/nettle
+NETTLE_CONFIGURE_OFF=		--without-nettle
+SNMP_CONFIGURE_ENABLE=		snmp
+SSL_CONFIGURE_ENABLE=		ssl
+SSL_CRTD_CONFIGURE_ENABLE=	ssl-crtd
+STACKTRACES_CONFIGURE_ENABLE=	stacktraces
+STACKTRACES_LIB_DEPENDS=	libunwind.so:devel/libunwind
+STACKTRACES_CONFIGURE_ON=	--disable-strict-error-checking
+TP_IPFW_CONFIGURE_ENABLE=	ipfw-transparent
+TP_IPF_CONFIGURE_ENABLE=	ipf-transparent
+TP_PF_CONFIGURE_ENABLE=		pf-transparent
+TP_PF_CONFIGURE_WITH=		nat-devpf
+VIA_DB_CONFIGURE_ENABLE=	forw-via-db
+WCCPV2_CONFIGURE_ENABLE=	wccpv2
+WCCP_CONFIGURE_ENABLE=		wccp
+
+GSSAPI_NONE_CONFIGURE_ON=	--without-heimdal-krb5 \
+				--without-mit-krb5 \
+				--without-gss
+
+GSSAPI_BASE_USES=		gssapi
+GSSAPI_BASE_CONFIGURE_ON=	--with-heimdal-krb5=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
+
+GSSAPI_HEIMDAL_USES=		gssapi:heimdal
+GSSAPI_HEIMDAL_CONFIGURE_ON=	--with-heimdal-krb5=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
+
+GSSAPI_MIT_USES=		gssapi:mit
+GSSAPI_MIT_CONFIGURE_ON=	--with-mit-krb5=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
+
+# TODO:
+# add an option for external_acl/session (requires some kind of external
+# Berkeley DB support, unsure which one)
+ARP_ACL_DESC=		ARP/MAC/EUI based authentification
+AUTH_DESC=		Authentication helpers
+GSSAPI_DESC=		Install Kerberos authentication helpers
+GSSAPI_NONE_DESC=	Build without Kerberos support
+GSSAPI_BASE_DESC=	Build with Kerberos support from base
+GSSAPI_HEIMDAL_DESC=	Build with Kerberos support from security/heimdal
+GSSAPI_MIT_DESC=	Build with Kerberos support from security/krb5
+AUTH_LDAP_DESC=		Install LDAP authentication helpers
+AUTH_NIS_DESC=		Install NIS/YP authentication helpers
+AUTH_SASL_DESC=		Install SASL authentication helpers
+AUTH_SMB_DESC=		Install SMB auth. helpers (req. Samba)
+AUTH_SQL_DESC=		Install SQL based auth
+CACHE_DIGESTS_DESC=	Use cache digests
+DEBUG_DESC=		Build with extended debugging support
+DELAY_POOLS_DESC=	Delay pools (bandwidth limiting)
+ECAP_DESC=		Loadable content adaptation modules
+ESI_DESC=		ESI support
+FOLLOW_XFF_DESC=	Support for the X-Following-For header
+FS_AUFS_DESC=		AUFS (threaded-io) support
+FS_DISKD_DESC=		DISKD storage engine controlled by separate service
+FS_ROCK_DESC=		ROCK storage engine
+HTCP_DESC=		HTCP support
+ICAP_DESC=		the ICAP client
+ICMP_DESC=		ICMP pinging and network measurement
+IDENT_DESC=		Ident lookups (RFC 931)
+KQUEUE_DESC=		Kqueue(2) support
+LARGEFILE_DESC=		Support large (>2GB) cache and log files
+NETTLE_DESC=		Nettle MD5 algorithm support
+SNMP_DESC=		SNMP support
+SSL_CRTD_DESC=		Use ssl_crtd to handle SSL cert requests
+SSL_DESC=		SSL gatewaying support
+STACKTRACES_DESC=	Enable automatic backtraces on fatal errors
+LAX_HTTP_DESC=		Do not enforce strict HTTP compliance
+TP_IPFW_DESC=		Transparent proxying with IPFW
+TP_IPF_DESC=		Transparent proxying with IPFilter
+TP_PF_DESC=		Transparent proxying with PF
+VIA_DB_DESC=		Forward/Via database
+WCCPV2_DESC=		Web Cache Coordination Protocol v2
+WCCP_DESC=		Web Cache Coordination Protocol
+
+change_files=	ChangeLog \
+		contrib/nextstep/makepkg \
+		contrib/nextstep/post_install \
+		errors/Makefile.am \
+		errors/Makefile.in \
+		src/auth/basic/SMB_LM/README.html \
+		src/Makefile.am \
+		src/Makefile.in \
+		src/cf_gen.cc \
+		src/squid.8.in \
+		test-suite/Makefile.in \
+		tools/Makefile.am \
+		tools/Makefile.in
+
+.if !defined(SQUID_CONFIGURE_ARGS) \
+	|| ${SQUID_CONFIGURE_ARGS:M*--disable-unlinkd*} == ""
+PLIST_SUB+=	UNLINKD=""
+.else
+PLIST_SUB+=	UNLINKD="@comment "
+.endif
+
+CONFIGURE_ARGS=	--with-default-user=squid \
+		--bindir=${PREFIX}/sbin \
+		--sbindir=${PREFIX}/sbin \
+		--datadir=${ETCDIR} \
+		--libexecdir=${PREFIX}/libexec/squid \
+		--localstatedir=/var \
+		--sysconfdir=${ETCDIR} \
+		--with-logdir=/var/log/squid \
+		--with-pidfile=/var/run/squid/squid.pid \
+		--with-swapdir=/var/squid/cache \
+		--without-gnutls \
+		--enable-auth \
+		--enable-build-info \
+		--enable-loadable-modules \
+		--enable-removal-policies="lru heap" \
+		--disable-epoll \
+		--disable-linux-netfilter \
+		--disable-linux-tproxy \
+		--disable-translation \
+		--disable-arch-native
+
+.include <bsd.port.options.mk>
+
+# Authentication methods and modules:
+
+basic_auth=	DB SMB_LM NCSA PAM POP3 RADIUS fake getpwnam
+digest_auth=	file
+external_acl=	file_userip time_quota unix_group
+ntlm_auth=	fake SMB_LM
+
+.if ${PORT_OPTIONS:MAUTH_LDAP}
+basic_auth+=	LDAP
+external_acl+=	LDAP_group
+.endif
+
+.if ${PORT_OPTIONS:MAUTH_SASL}
+basic_auth+=	SASL
+.endif
+
+.if ${PORT_OPTIONS:MAUTH_SMB}
+basic_auth+=	SMB
+external_acl+=	wbinfo_group
+.endif
+
+.if ${PORT_OPTIONS:MAUTH_SQL}
+external_acl+=	SQL_session
+.endif
+
+# POLA: allow the old global make.conf(5) (pre src.conf(5)) defines, too:
+.if ${PORT_OPTIONS:MAUTH_NIS} && !defined(NO_NIS) && !defined(WITHOUT_NIS)
+basic_auth+=	NIS
+.endif
+
+# POLA: allow the old global make.conf(5) (pre src.conf(5)) defines, too:
+.if ${PORT_OPTIONS:MGSSAPI_NONE} || defined(NO_KERBEROS) || defined(WITHOUT_KERBEROS)
+negotiate_auth=	none
+PLIST_SUB+=	AUTH_KERB="@comment "
+.else
+# The kerberos_ldap_group external helper also depends on LDAP and SASL:
+. if ${PORT_OPTIONS:MAUTH_LDAP} && ${PORT_OPTIONS:MAUTH_SASL}
+external_acl+=	kerberos_ldap_group
+. endif
+negotiate_auth=	kerberos wrapper
+PLIST_SUB+=	AUTH_KERB=""
+.endif
+
+# Make it build on FreeBSD < 10
+.if ${PORT_OPTIONS:MGSSAPI_BASE}
+EXTRA_PATCHES+=		${FILESDIR}/extra-patch-build-8-9
+.endif
+
+CONFIGURE_ARGS+=	--enable-auth-basic="${basic_auth}" \
+			--enable-auth-digest="${digest_auth}" \
+			--enable-external-acl-helpers="${external_acl}" \
+			--enable-auth-negotiate="${negotiate_auth}" \
+			--enable-auth-ntlm="${ntlm_auth}"
+
+# Storage schemes:
+storage_schemes=	ufs
+diskio_modules=		AIO Blocking IpcIo Mmapped
+
+.if ${PORT_OPTIONS:MFS_AUFS}
+storage_schemes+=	aufs
+diskio_modules+=	DiskThreads
+# Nil aufs threads is default, set any other value via SQUID_CONFIGURE_ARGS,
+# e.g. SQUID_CONFIGURE_ARGS=--with-aufs-threads=N
+LDFLAGS+=		-pthread
+.else
+CONFIGURE_ARGS+=	--without-pthreads
+.endif
+
+.if ${PORT_OPTIONS:MFS_DISKD}
+storage_schemes+=	diskd
+diskio_modules+=	DiskDaemon
+.endif
+
+.if ${PORT_OPTIONS:MFS_ROCK}
+storage_schemes+=	rock
+.endif
+
+CONFIGURE_ARGS+=	--enable-storeio="${storage_schemes}" \
+			--enable-disk-io="${diskio_modules}"
+
+# Log daemon helpers:
+logdaemon_helpers=	file
+CONFIGURE_ARGS+=	--enable-log-daemon-helpers="${logdaemon_helpers}"
+
+# URL rewrite helpers:
+url_rewrite_helpers=	fake
+CONFIGURE_ARGS+=	--enable-url-rewrite-helpers="${url_rewrite_helpers}"
+
+# Storeid rewrite helpers:
+storeid_rewrite_helpers=	file
+CONFIGURE_ARGS+=	--enable-storeid-rewrite-helpers="${storeid_rewrite_helpers}"
+
+# Security certificate validator helpers:
+security_cert_validators=	fake
+CONFIGURE_ARGS+=	--enable-security-cert-validators="${security_cert_validators}"
+
+# Other options set via 'make config':
+
+.if ${PORT_OPTIONS:MSSL}
+# we need to .include bsd.openssl.mk manually here.because USE_OPENSSL only
+# works when it is defined before bsd.port{.pre}.mk is .included.
+# This makes it currently impossible to combine this macro with OPTIONS to
+# conditionally include OpenSSL support.
+# XXX: is this still true with OptionsNG as of 2015-03?
+#.include "${.CURDIR}/../../Mk/bsd.openssl.mk"
+.include "${PORTSDIR}/Mk/bsd.openssl.mk"
+CONFIGURE_ARGS+=	--with-openssl="${OPENSSLBASE}"
+CFLAGS+=		-I${OPENSSLINC}
+LDFLAGS+=		-L${OPENSSLLIB}
+
+# Security certificate generator helpers:
+security_cert_generators=	file
+CONFIGURE_ARGS+=	--enable-security-cert-generators="${security_cert_generators}"
+.endif
+
+.if ${PORT_OPTIONS:MSSL_CRTD} && !${PORT_OPTIONS:MSSL}
+IGNORE=SSL_CRTD option can be used only if SSL option is enabled
+.endif
+
+.if ${PORT_OPTIONS:MSTACKTRACES}
+CFLAGS+=	-g
+LDFLAGS+=	-lunwind -L${LOCALBASE}/lib
+STRIP=
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-gen-stacktrace
+.endif
+
+.if ${PORT_OPTIONS:MDEBUG} || defined(WITH_DEBUG)
+CONFIGURE_ARGS+=	--disable-optimizations --enable-debug-cbdata
+WITH_DEBUG?=		yes
+.endif
+
+# Finally, add additional user specified configuration options:
+CONFIGURE_ARGS+=	${SQUID_CONFIGURE_ARGS}
+
+post-patch:
+	@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+		${WRKSRC}/src/cf.data.pre
+	@(cd ${WRKSRC} && ${REINPLACE_CMD} \
+		-e 's|\.conf\.default|.conf.sample|' \
+		-e 's|)\.default|).sample|' \
+		${change_files})
+	@(cd ${WRKSRC} && ${MV} src/mime.conf.default src/mime.conf.sample)
+
+.if !${PORT_OPTIONS:MIPV6}
+	@${REINPLACE_CMD} -e's/ ::1//' -e's/ fc00::\/7//' \
+		-e's/ fe80::\/10//' -e's/ 2001:DB8::2//' \
+		-e's/ 2001:DB8::a:0\/64//' \
+		-e'/tcp_outgoing_address 2001:db8::c001 good_service_net/d' \
+		-e'/tcp_outgoing_address 2001:db8::beef normal_service_net/d' \
+		-e'/tcp_outgoing_address 2001:db8::1/d' \
+		${WRKSRC}/src/cf.data.pre
+.endif
+
+post-install:
+	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+	${INSTALL_DATA} ${WRKSRC}/src/auth/basic/DB/passwd.sql \
+		${STAGEDIR}${EXAMPLESDIR}
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	(cd ${WRKSRC} && ${INSTALL_DATA} ${MYDOCS} ${STAGEDIR}${DOCSDIR})
+
+.include <bsd.port.pre.mk>
+
+.if ${COMPILER_TYPE} == clang
+#CXXFLAGS+=	-Wno-unused-private-field
+.if ${COMPILER_VERSION} >= 35
+CXXFLAGS+=	-Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -Wno-dynamic-class-memaccess
+.endif
+.endif
+
+.include <bsd.port.post.mk>

Added: head/www/squid-devel/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/distinfo	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,2 @@
+SHA256 (squid4.0/squid-4.0.9.tar.xz) = cfc42dcd3a50096f25a4514ef8ad16290098e6d150cd56d171bb481f115b95d9
+SIZE (squid4.0/squid-4.0.9.tar.xz) = 2382228

Added: head/www/squid-devel/files/extra-patch-build-8-9
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/extra-patch-build-8-9	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,11 @@
+--- src/auth/negotiate/kerberos/negotiate_kerberos.h.orig	2015-08-01 06:08:17 UTC
++++ src/auth/negotiate/kerberos/negotiate_kerberos.h
+@@ -140,7 +140,7 @@ int check_gss_err(OM_uint32 major_status
+ 
+ char *gethost_name(void);
+ 
+-#if (HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT || HAVE_GSS_MAP_NAME_TO_ANY) && HAVE_KRB5_PAC
++#if (HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT || HAVE_GSS_MAP_NAME_TO_ANY) && HAVE_KRB5_PAC && __FreeBSD__ >= 10
+ #define HAVE_PAC_SUPPORT 1
+ #define MAX_PAC_GROUP_SIZE 200*60
+ typedef struct {

Added: head/www/squid-devel/files/extra-patch-gen-stacktrace
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/extra-patch-gen-stacktrace	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,62 @@
+--- src/tools.cc.orig	2014-10-31 12:36:43.000000000 +0300
++++ src/tools.cc	2014-11-21 14:11:25.000000000 +0300
+@@ -71,6 +71,13 @@
+ #include <errno.h>
+ #endif
+ 
++#if PRINT_STACK_TRACE
++#ifdef __FreeBSD__
++#define UNW_LOCAL_ONLY
++#include <libunwind.h>
++#endif
++#endif
++
+ #define DEAD_MSG "\
+ The Squid Cache (version %s) died.\n\
+ \n\
+@@ -411,6 +418,45 @@
+     }
+ 
+ #endif
++#ifdef __FreeBSD__
++    do {
++	unw_context_t unw_ctx;
++	unw_cursor_t unw_cp;
++	unw_word_t sp, ip, off;
++	int rc = 0;
++	char procname[256];
++	size_t frame;
++
++	bzero((void *)&unw_ctx, sizeof(unw_ctx));
++	bzero((void *)&unw_cp, sizeof(unw_cp));
++
++	if ((rc = unw_getcontext(&unw_ctx))) {
++            fprintf(debug_log, "Failed to trace own stack: "
++		    "unw_context() said '%s'.\n", unw_strerror(rc));
++	    break;
++	}
++	if ((rc = unw_init_local(&unw_cp, &unw_ctx))) {
++            fprintf(debug_log, "Failed to trace own stack: "
++		    "unw_init_local() said '%s'.\n", unw_strerror(rc));
++	    break;
++	}
++	frame = 0;
++	fprintf(debug_log, "Backtrace follows (deepest frame first):\n");
++	while ((rc = unw_step(&unw_cp)) > 0) {
++	    frame++;
++	    ip = 0; sp = 0;
++	    unw_get_reg(&unw_cp, UNW_REG_IP, &ip);
++	    unw_get_reg(&unw_cp, UNW_REG_SP, &sp);
++	    off = 0;
++	    rc = unw_get_proc_name(&unw_cp, procname, sizeof(procname), &off);
++	    if (rc)
++		snprintf (procname, sizeof(procname), "[unknown]");
++	    fprintf(debug_log, "#%zd: %s + 0x%zx, ip = 0x%zx, sp = 0x%zx\n",
++		    frame, procname, (size_t)off, (size_t)ip, (size_t)sp);
++	}
++	fprintf(debug_log, "Use addr2line of similar to translate offsets to line information.\n");
++    } while (0);
++#endif /* __FreeBSD__ */
+ #endif /* PRINT_STACK_TRACE */
+ 
+ #if SA_RESETHAND == 0 && !_SQUID_WINDOWS_

Added: head/www/squid-devel/files/patch-compat_compat.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-compat_compat.h	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,20 @@
+--- compat/compat.h.orig	2015-11-01 10:44:25 UTC
++++ compat/compat.h
+@@ -42,17 +42,6 @@
+ #endif
+ #endif
+ 
+-/* Solaris 10 has a broken definition for minor_t in IPFilter compat.
+- * We must pre-define before doing anything with OS headers so the OS
+- * do not. Then un-define it before using the IPFilter *_compat.h headers.
+- */
+-#if IPF_TRANSPARENT && USE_SOLARIS_IPFILTER_MINOR_T_HACK
+-/* But we only need do this nasty thing for src/ip/Intercept.cc */
+-#if BUILDING_SQUID_IP_INTERCEPT_CC
+-#define minor_t solaris_minor_t_fubar
+-#endif
+-#endif
+-
+ /*****************************************************/
+ /* FDSETSIZE is messy and needs to be done before    */
+ /* sys/types.h are defined.                          */

Added: head/www/squid-devel/files/patch-compat_shm.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-compat_shm.cc	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,11 @@
+--- compat/shm.cc.orig	2015-11-01 10:44:25 UTC
++++ compat/shm.cc
+@@ -29,6 +29,8 @@ shm_portable_segment_name_is_path()
+     size_t len = sizeof(jailed);
+     ::sysctlbyname("security.jail.jailed", &jailed, &len, NULL, 0);
+     return !jailed;
++#elif defined (__DragonFly__)
++    return true;
+ #else
+     return false;
+ #endif

Added: head/www/squid-devel/files/patch-configure
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-configure	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,82 @@
+--- configure.orig	2015-11-01 10:46:19 UTC
++++ configure
+@@ -32038,7 +32040,7 @@ done
+ ##
+ 
+ BUILD_HELPER="NIS"
+-for ac_header in sys/types.h rpc/rpc.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h crypt.h
++for ac_header in sys/types.h rpc/rpc.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h rpcsvc/crypt.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+@@ -32053,8 +32055,10 @@ if eval test \"x\$"$as_ac_Header"\" = x"
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+ 
+-else
+-  BUILD_HELPER=""
++# XXX: On FreeBSD we have to do this to make NIS work
++# until https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=188247
++# is resolved.
++  BUILD_HELPER="NIS"
+ fi
+ 
+ done
+@@ -32519,7 +32523,7 @@ done
+ 
+   # unconditionally requires crypt(3), for now
+   if test "x$ac_cv_func_crypt" != "x"; then
+-    for ac_header in unistd.h crypt.h shadow.h
++    for ac_header in unistd.h rpcsvc/crypt.h shadow.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+@@ -34574,7 +34578,7 @@ for ac_header in \
+   arpa/nameser.h \
+   assert.h \
+   bstring.h \
+-  crypt.h \
++  rpcsvc/crypt.h \
+   ctype.h \
+   direct.h \
+   errno.h \
+@@ -34785,6 +34789,7 @@ ac_fn_cxx_check_header_compile "$LINENO"
+ #include <netinet/ip.h>
+ #endif
+ #if HAVE_NETINET_IP_COMPAT_H
++#include <net/if.h>	/* IFNAMSIZ */
+ #include <netinet/ip_compat.h>
+ #endif
+ #if HAVE_NETINET_IP_FIL_H
+@@ -38773,6 +38778,7 @@ if test "x$enable_ipf_transparent" != "x
+ #     include <sys/ioccom.h>
+ #     include <netinet/in.h>
+ 
++#     include <net/if.h>	/* IFNAMSIZ */
+ #     include <netinet/ip_compat.h>
+ #     include <netinet/ip_fil.h>
+ #     include <netinet/ip_nat.h>
+@@ -38803,6 +38809,7 @@ else
+ #       include <sys/ioccom.h>
+ #       include <netinet/in.h>
+ #undef minor_t
++#       include <net/if.h>	/* IFNAMSIZ */
+ #       include <netinet/ip_compat.h>
+ #       include <netinet/ip_fil.h>
+ #       include <netinet/ip_nat.h>
+@@ -38847,6 +38854,7 @@ _ACEOF
+ 	ip_fil_compat.h \
+ 	ip_fil.h \
+ 	ip_nat.h \
++	net/if.h \
+ 	netinet/ip_compat.h \
+ 	netinet/ip_fil_compat.h \
+ 	netinet/ip_fil.h \
+@@ -38876,6 +38884,7 @@ ac_fn_cxx_check_header_compile "$LINENO"
+ #if HAVE_IP_COMPAT_H
+ #include <ip_compat.h>
+ #elif HAVE_NETINET_IP_COMPAT_H
++#include <net/if.h>	/* IFNAMSIZ */
+ #include <netinet/ip_compat.h>
+ #endif
+ #if HAVE_IP_FIL_H

Added: head/www/squid-devel/files/patch-src-cf.data.pre
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-src-cf.data.pre	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,13 @@
+--- src/cf.data.pre.orig	2015-11-01 10:44:25 UTC
++++ src/cf.data.pre
+@@ -4558,6 +4558,10 @@ DEFAULT: @DEFAULT_PID_FILE@
+ LOC: Config.pidFilename
+ DOC_START
+ 	A filename to write the process-id to.  To disable, enter "none".
++
++	Note: If you change this setting, you need to set squid_pidfile
++	in /etc/rc.conf to reflect the new value. Please see
++	/usr/local/etc/rc.d/squid for details.
+ DOC_END
+ 
+ NAME: client_netmask

Added: head/www/squid-devel/files/patch-src_DiskIO_Mmapped_MmappedFile.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-src_DiskIO_Mmapped_MmappedFile.cc	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,11 @@
+--- src/DiskIO/Mmapped/MmappedFile.cc.orig	2015-11-01 10:44:25 UTC
++++ src/DiskIO/Mmapped/MmappedFile.cc
+@@ -235,7 +235,7 @@ Mmapping::map()
+     static const int pageSize = getpagesize();
+     delta = offset % pageSize;
+ 
+-    buf = mmap(NULL, length + delta, prot, flags, fd, offset - delta);
++    buf = mmap(NULL, length + delta, prot, flags | MAP_NOSYNC, fd, offset - delta);
+ 
+     if (buf == MAP_FAILED) {
+         const int errNo = errno;

Added: head/www/squid-devel/files/patch-src__ip__Intercept.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-src__ip__Intercept.cc	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,53 @@
+--- src/ip/Intercept.cc.orig	2015-11-01 10:44:25 UTC
++++ src/ip/Intercept.cc
+@@ -202,10 +202,10 @@ Ip::Intercept::IpfInterception(const Com
+     // for NAT lookup set local and remote IP:port's
+     if (newConn->remote.isIPv6()) {
+ #if IPFILTER_VERSION < 5000003
+-        // warn once every 10 at critical level, then push down a level each repeated event
++        // warn once every million at critical level, then push down a level each repeated event
+         static int warningLevel = DBG_CRITICAL;
+         debugs(89, warningLevel, "IPF (IPFilter v4) NAT does not support IPv6. Please upgrade to IPFilter v5.1");
+-        warningLevel = (warningLevel + 1) % 10;
++        warningLevel = (warningLevel + 1) % 1048576;
+         return false;
+ #else
+         natLookup.nl_v = 6;
+@@ -323,13 +323,21 @@
+     }
+ 
+     memset(&nl, 0, sizeof(struct pfioc_natlook));
+-    newConn->remote.getInAddr(nl.saddr.v4);
++    if (newConn->remote.isIPv4()) {
++        newConn->remote.getInAddr(nl.saddr.v4);
++    } else {
++        newConn->remote.getInAddr(nl.saddr.v6);
++    }
+     nl.sport = htons(newConn->remote.port());
+ 
+-    newConn->local.getInAddr(nl.daddr.v4);
++    if (newConn->local.isIPv4()) {
++        newConn->local.getInAddr(nl.daddr.v4);
++    } else {
++        newConn->local.getInAddr(nl.daddr.v6);
++    }
+     nl.dport = htons(newConn->local.port());
+ 
+-    nl.af = AF_INET;
++    nl.af = newConn->remote.isIPv4() ? AF_INET : AF_INET6;
+     nl.proto = IPPROTO_TCP;
+     nl.direction = PF_OUT;
+ 
+@@ -345,7 +353,11 @@
+         debugs(89, 9, HERE << "address: " << newConn);
+         return false;
+     } else {
+-        newConn->local = nl.rdaddr.v4;
++        if (nl.af == AF_INET) {
++            newConn->local = nl.rdaddr.v4;
++        } else {
++            newConn->local = nl.rdaddr.v6;
++        }
+         newConn->local.port(ntohs(nl.rdport));
+         debugs(89, 5, HERE << "address NAT: " << newConn);
+         return true;

Added: head/www/squid-devel/files/patch-src_adaptation_ecap_ServiceRep.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-src_adaptation_ecap_ServiceRep.cc	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,11 @@
+--- src/adaptation/ecap/ServiceRep.cc.orig	2016-04-20 13:19:59 UTC
++++ src/adaptation/ecap/ServiceRep.cc
+@@ -236,7 +236,7 @@ bool Adaptation::Ecap::ServiceRep::probe
+ 
+ bool Adaptation::Ecap::ServiceRep::up() const
+ {
+-    return theService;
++    return theService != NULL;
+ }
+ 
+ bool Adaptation::Ecap::ServiceRep::wantsUrl(const SBuf &urlPath) const

Added: head/www/squid-devel/files/patch-src_ipc_mem_Segment.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-src_ipc_mem_Segment.cc	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,11 @@
+--- src/ipc/mem/Segment.cc.orig	2015-11-01 10:44:25 UTC
++++ src/ipc/mem/Segment.cc
+@@ -150,7 +150,7 @@ Ipc::Mem::Segment::attach()
+     assert(theSize == static_cast<off_t>(static_cast<size_t>(theSize)));
+ 
+     void *const p =
+-        mmap(NULL, theSize, PROT_READ | PROT_WRITE, MAP_SHARED, theFD, 0);
++        mmap(NULL, theSize, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_NOSYNC, theFD, 0);
+     if (p == MAP_FAILED) {
+         debugs(54, 5, HERE << "mmap " << theName << ": " << xstrerror());
+         fatalf("Ipc::Mem::Segment::attach failed to mmap(%s): %s\n",

Added: head/www/squid-devel/files/patch-src_tools.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/patch-src_tools.cc	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,11 @@
+--- src/tools.cc.orig	2015-11-01 10:44:25 UTC
++++ src/tools.cc
+@@ -603,7 +603,7 @@ no_suid(void)
+     uid = geteuid();
+     debugs(21, 3, "no_suid: PID " << getpid() << " giving up root priveleges forever");
+ 
+-    if (setuid(0) < 0) {
++    if (setuid(0) < 0 && TheProcessKind != pkHelper) {
+         int xerrno = errno;
+         debugs(50, DBG_IMPORTANT, "WARNING: no_suid: setuid(0): " << xstrerr(xerrno));
+     }

Added: head/www/squid-devel/files/pkg-install.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/pkg-install.in	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+PATH=/bin:/usr/bin:/usr/sbin
+pkgname=$1
+squid_homedir="/var/squid"
+squid_cache_basedir="${squid_homedir}/cache"
+squid_confdir="${PKG_PREFIX:-%%PREFIX%%}/etc/squid"
+squid_logdir="/var/log/squid"
+# these are hardcoded, see /usr/ports/UIDs and /usr/ports/GIDs:
+squid_user=squid
+squid_group=squid
+squid_gid=100
+squid_uid=100
+case $2 in
+PRE-INSTALL)
+	echo "===> Pre-installation configuration for ${pkgname}"
+	;;
+POST-INSTALL)
+	# Since we usually start the Squid master process as ${squid_user}
+	# instead of root make sure that ${squid_homedir} is writable for it.
+	if [ ! -d ${squid_homedir} ]; then
+		echo "Creating ${squid_homedir}..."
+		install -d -o root -g ${squid_group} \
+		    -m 0775 ${squid_homedir}
+	else
+		chgrp ${squid_group} ${squid_homedir}
+		chmod g+w ${squid_homedir}
+	fi
+	if [ ! -d ${squid_cache_basedir} ]; then
+		echo "Creating ${squid_cache_basedir} ..."
+		install -d -o ${squid_user} -g ${squid_group} \
+		    -m 0750 ${squid_cache_basedir}
+	else
+		chown ${squid_user} ${squid_cache_basedir}
+		chgrp ${squid_group} ${squid_cache_basedir}
+		chmod 0750 ${squid_cache_basedir}
+	fi
+	if [ ! -d ${squid_confdir} ]; then
+		echo "Creating ${squid_confdir}..."
+		install -d -o root -g ${squid_group} \
+		    -m 0755 ${squid_confdir}
+	else
+		chgrp ${squid_group} ${squid_confdir}
+	fi
+	if [ ! -d ${squid_logdir} ]; then
+		echo "Creating ${squid_logdir}..."
+		install -d -o ${squid_user} -g ${squid_group} \
+		    -m 0750 ${squid_logdir}
+	else
+		chown ${squid_user} ${squid_logdir}
+		chgrp ${squid_group} ${squid_logdir}
+	fi
+	for file in cachemgr.conf errorpage.css mime.conf msntauth.conf squid.conf; do
+		if [ ! -f ${squid_confdir}/${file} \
+		    -a -f ${squid_confdir}/${file}.default ]; then
+			echo "Creating ${file} from default..."
+			install -c -o root -g ${squid_group} -m 0640 \
+		    	    ${squid_confdir}/${file}.default \
+			    ${squid_confdir}/${file}
+		fi
+	done
+	;;
+*)
+	exit 64
+	;;
+esac
+exit 0

Added: head/www/squid-devel/files/pkg-message.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/pkg-message.in	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,48 @@
+     o You can find the configuration files for this package in the
+       directory %%PREFIX%%/etc/squid.
+
+     o The default cache directory is /var/squid/cache/.
+       The default log directory is /var/log/squid/.
+
+       Note:
+       You must initialize new cache directories before you can start
+       squid.  Do this by running "squid -z" as 'root' or 'squid'.
+       If your cache directories are already initialized (e.g. after an
+       upgrade of squid) you do not need to initialize them again.
+
+     o When using DiskD storage scheme remember to read documentation:
+         http://wiki.squid-cache.org/Features/DiskDaemon
+       and alter your kern.ipc defaults in /boot/loader.conf. DiskD will not
+       work reliably without this. Last recomendations were:
+
+         kern.ipc.msgmnb=8192
+         kern.ipc.msgssz=64
+         kern.ipc.msgtql=2048
+
+     o The default configuration will deny everyone but the local host and
+       local networks as defined in RFC 1918 for IPv4 and RFCs 4193 and
+       4291 for IPv6 access to the proxy service.  Edit the "http_access
+       allow/deny" directives in %%PREFIX%%/etc/squid/squid.conf
+       to suit your needs.
+
+     o If AUTH_SQL option is set, please, don't forget to install one of
+       following perl modules depending on database you like:
+         databases/p5-DBD-mysql
+         databases/p5-DBD-Pg
+         databases/p5-DBD-SQLite
+
+     To enable Squid, set squid_enable=yes in either
+     /etc/rc.conf, /etc/rc.conf.local or /etc/rc.conf.d/squid
+     Please see %%PREFIX%%/etc/rc.d/squid for further details.
+
+     Note:
+     If you just updated your Squid installation from an earlier version,
+     make sure to check your Squid configuration against the 3.4 default
+     configuration file %%PREFIX%%/etc/squid/squid.conf.sample.
+     
+     %%PREFIX%%/etc/squid/squid.conf.documented is a fully annotated
+     configuration file you can consult for further reference.
+
+     Additionally, you should check your configuration by calling
+     'squid -f /path/to/squid.conf -k parse' before starting Squid.
+

Added: head/www/squid-devel/files/squid.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/squid-devel/files/squid.in	Sun May  1 20:27:56 2016	(r414422)
@@ -0,0 +1,149 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# PROVIDE: squid
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Note:
+# Set "squid_enable=yes" in either /etc/rc.conf, /etc/rc.conf.local or
+# /etc/rc.conf.d/squid to activate Squid.
+#
+# Additional variables you can define in one of these files:
+#
+# squid_chdir:	the directory into which the rc system moves into before
+# 		starting Squid. Default: /var/squid
+#
+# squid_conf:	The configuration file that Squid should use.
+#		Default: %%PREFIX%%/etc/squid/squid.conf
+#
+# squid_fib:	The alternative routing table id that Squid should use.
+#		Default: none
+#		See setfib(1) for further details. Note that the setfib(2)
+#		system call is not available in FreeBSD versions prior to 7.1.
+#
+# squid_user:	The user id that should be used to run the Squid master
+#		process. Default: squid.
+#		Note that you probably need to define "squid_user=root" if
+#		you want to run Squid in reverse proxy setups or if you want
+#		Squid to listen on a "privileged" port < 1024.
+#
+# squid_pidfile:
+#		The name (including the full path) of the Squid
+#		master process' PID file.
+#		Default: /var/run/squid/squid.pid.
+#		You only need to change this if you changed the
+#		corresponding entry in your Squid configuration.
+#
+# squid_flags:	Additional commandline arguments for Squid you might want to
+#		use. See squid(8) for further details.
+#
+# squid_krb5_ktname:
+#		Alternative Kerberos 5 Key Table.
+#		Default: none
+
+. /etc/rc.subr
+
+name=squid
+rcvar=squid_enable
+
+# Make sure that we invoke squid with "-f ${squid_conf}"; define this
+# variable early so reload_cmd and stop_precmd pick it up:
+
+extra_commands="reload configtest"
+reload_cmd=squid_reload
+start_precmd=squid_prestart
+start_postcmd=squid_getpid
+stop_precmd=squid_prestop
+configtest_cmd=squid_configtest
+reload_precmd=squid_configtest
+restart_precmd=squid_configtest
+
+# squid(8) will not start if ${squid_conf} is not present so try
+# to catch that beforehand via ${required_files} rather than make
+# squid(8) crash.
+
+squid_load_rc_config()
+{
+	: ${squid_chdir:=/var/squid}
+	: ${squid_conf:=%%PREFIX%%/etc/squid/squid.conf}
+	: ${squid_enable:=NO}
+	: ${squid_program:=%%PREFIX%%/sbin/squid}
+	: ${squid_pidfile:=/var/run/squid/squid.pid}
+	: ${squid_user:=squid}
+
+	required_args="-f ${squid_conf}"
+	required_dirs=$chdir
+	required_files=$squid_conf
+	command_args="${required_args} ${squid_flags}"
+#	We used to need it in squid3 to match pid and proc name
+#	procname="?squid-*"
+	pidfile=$squid_pidfile
+}
+
+squid_prestart()
+{
+	# setup KRB5_KTNAME:
+	squid_krb5_ktname=${squid_krb5_ktname:-"NONE"}
+	if [ "${squid_krb5_ktname}" != "NONE" ]; then
+		export KRB5_KTNAME=${squid_krb5_ktname}
+	fi
+
+	# setup FIB tables:
+	if command -v check_namevarlist > /dev/null 2>&1; then
+		check_namevarlist fib && return 0
+	fi
+
+	${SYSCTL} net.fibs >/dev/null 2>&1 || return 0
+
+	squid_fib=${squid_fib:-"NONE"}
+	if [ "${squid_fib}" != "NONE" ]; then
+		command="setfib -F $squid_fib $command"
+	else
+		return 0
+	fi
+
+	squid_configtest
+}
+
+squid_reload()
+{
+	$command $required_args $squid_flags -k reconfigure
+}
+
+squid_configtest()
+{
+	echo "Performing sanity check on ${name} configuration."
+	if $command $required_args $squid_flags -k check; then
+		echo "Configuration for ${name} passes."
+		return 0
+	else
+		return $?
+	fi
+}
+
+squid_getpid()
+{
+	# retrieve the PID of the Squid master process explicitly here
+	# in case rc.subr was unable to determine it:
+	if [ -z "$rc_pid" ]; then
+		while ! [ -f ${pidfile} ]; do
+			sleep 1
+		done
+		read _pid _junk <${pidfile}
+		[ -z "${_pid}" ] || pid=${_pid}
+	else
+		pid=${rc_pid}
+	fi
+}
+
+squid_prestop()
+{
+	command_args="$command_args -k shutdown"
+	squid_configtest
+}
+
+load_rc_config $name
+squid_load_rc_config

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-ports-all mailing list