svn commit: r252156 - in stable/9: share/man/man4 sys/netgraph

Gleb Smirnoff glebius at FreeBSD.org
Mon Jun 24 09:39:07 UTC 2013


Author: glebius
Date: Mon Jun 24 09:39:06 2013
New Revision: 252156
URL: http://svnweb.freebsd.org/changeset/base/252156

Log:
  Merge r248570, 248582:
    Add NGM_NAT_LIBALIAS_INFO command, that reports internal stats
    of libalias instance. To be used in the mpd5 daemon.
  
    Submitted by: Dmitry Luhtionov <dmitryluhtionov gmail.com>

Modified:
  stable/9/share/man/man4/ng_nat.4
  stable/9/sys/netgraph/ng_nat.c
  stable/9/sys/netgraph/ng_nat.h
Directory Properties:
  stable/9/share/man/man4/   (props changed)
  stable/9/sys/   (props changed)

Modified: stable/9/share/man/man4/ng_nat.4
==============================================================================
--- stable/9/share/man/man4/ng_nat.4	Mon Jun 24 09:36:56 2013	(r252155)
+++ stable/9/share/man/man4/ng_nat.4	Mon Jun 24 09:39:06 2013	(r252156)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 1, 2008
+.Dd March 21, 2013
 .Dt NG_NAT 4
 .Os
 .Sh NAME
@@ -239,6 +239,31 @@ supplied as argument).
 See
 .Xr libalias 3
 for details.
+.It Dv NGM_NAT_LIBALIAS_INFO Pq Ic libaliasinfo
+Return internal statistics of
+.Xr libalias 3
+instance as
+.Vt "struct ng_nat_libalias_info" .
+.Bd -literal
+struct ng_nat_libalias_info {
+	uint32_t	icmpLinkCount;
+	uint32_t	udpLinkCount;
+	uint32_t	tcpLinkCount;
+	uint32_t	sctpLinkCount;
+	uint32_t	pptpLinkCount;
+	uint32_t	protoLinkCount;
+	uint32_t	fragmentIdLinkCount;
+	uint32_t	fragmentPtrLinkCount;
+	uint32_t	sockCount;
+};
+.Ed
+In case of
+.Nm
+failed to retreive a certain counter
+from its
+.Xr libalias
+instance, the corresponding field is returned as
+.Va UINT32_MAX .
 .El
 .Pp
 In all redirection messages

Modified: stable/9/sys/netgraph/ng_nat.c
==============================================================================
--- stable/9/sys/netgraph/ng_nat.c	Mon Jun 24 09:36:56 2013	(r252155)
+++ stable/9/sys/netgraph/ng_nat.c	Mon Jun 24 09:39:06 2013	(r252156)
@@ -145,6 +145,14 @@ static const struct ng_parse_type ng_nat
 	&ng_nat_list_redirects_fields
 };
 
+/* Parse type for struct ng_nat_libalias_info. */
+static const struct ng_parse_struct_field ng_nat_libalias_info_fields[]
+	= NG_NAT_LIBALIAS_INFO;
+static const struct ng_parse_type ng_nat_libalias_info_type = {
+	&ng_parse_struct_type,
+	&ng_nat_libalias_info_fields
+};
+
 /* List of commands and how to convert arguments to/from ASCII. */
 static const struct ng_cmdlist ng_nat_cmdlist[] = {
 	{
@@ -224,6 +232,13 @@ static const struct ng_cmdlist ng_nat_cm
 	  &ng_parse_string_type,
 	  NULL
 	},
+	{
+	  NGM_NAT_COOKIE,
+	  NGM_NAT_LIBALIAS_INFO,
+	  "libaliasinfo",
+	  NULL,
+	  &ng_nat_libalias_info_type
+	},
 	{ 0 }
 };
 
@@ -647,6 +662,36 @@ ng_nat_rcvmsg(node_p node, item_p item, 
 				error = ENOMEM;
 		    }
 			break;
+		case NGM_NAT_LIBALIAS_INFO:
+		    {
+			struct ng_nat_libalias_info *i;
+
+			NG_MKRESPONSE(resp, msg,
+			    sizeof(struct ng_nat_libalias_info), M_NOWAIT);
+			if (resp == NULL) {
+				error = ENOMEM;
+				break;
+			}
+			i = (struct ng_nat_libalias_info *)resp->data;
+#define	COPY(F)	do {						\
+	if (priv->lib->F >= 0 && priv->lib->F < UINT32_MAX)	\
+		i->F = priv->lib->F;				\
+	else							\
+		i->F = UINT32_MAX;				\
+} while (0)
+		
+			COPY(icmpLinkCount);
+			COPY(udpLinkCount);
+			COPY(tcpLinkCount);
+			COPY(pptpLinkCount);
+			COPY(sctpLinkCount);
+			COPY(protoLinkCount);
+			COPY(fragmentIdLinkCount);
+			COPY(fragmentPtrLinkCount);
+			COPY(sockCount);
+#undef COPY
+		    }
+			break;
 		default:
 			error = EINVAL;		/* unknown command */
 			break;

Modified: stable/9/sys/netgraph/ng_nat.h
==============================================================================
--- stable/9/sys/netgraph/ng_nat.h	Mon Jun 24 09:36:56 2013	(r252155)
+++ stable/9/sys/netgraph/ng_nat.h	Mon Jun 24 09:39:06 2013	(r252156)
@@ -172,6 +172,33 @@ struct ng_nat_list_redirects {
 	  { NULL }						\
 }
 
+/* Structure returned by NGM_NAT_LIBALIAS_INFO */
+struct ng_nat_libalias_info {
+	uint32_t	icmpLinkCount;
+	uint32_t	udpLinkCount;
+	uint32_t	tcpLinkCount;
+	uint32_t	sctpLinkCount;
+	uint32_t	pptpLinkCount;
+	uint32_t	protoLinkCount;
+	uint32_t	fragmentIdLinkCount;
+	uint32_t	fragmentPtrLinkCount;
+	uint32_t	sockCount;
+};
+
+/* Keep this in sync with the above structure definition */
+#define NG_NAT_LIBALIAS_INFO {					\
+	  { "icmpLinkCount",	&ng_parse_uint32_type	},	\
+	  { "udpLinkCount",	&ng_parse_uint32_type	},	\
+	  { "tcpLinkCount",	&ng_parse_uint32_type	},	\
+	  { "sctpLinkCount",	&ng_parse_uint32_type	},	\
+	  { "pptpLinkCount",	&ng_parse_uint32_type	},	\
+	  { "protoLinkCount",	&ng_parse_uint32_type	},	\
+	  { "fragmentIdLinkCount", &ng_parse_uint32_type },	\
+	  { "fragmentPtrLinkCount", &ng_parse_uint32_type },	\
+	  { "sockCount",	&ng_parse_uint32_type	},	\
+	  { NULL }						\
+}
+
 enum {
 	NGM_NAT_SET_IPADDR = 1,
 	NGM_NAT_SET_MODE,
@@ -184,4 +211,5 @@ enum {
 	NGM_NAT_ADD_SERVER,
 	NGM_NAT_LIST_REDIRECTS,
 	NGM_NAT_PROXY_RULE,
+	NGM_NAT_LIBALIAS_INFO,
 };


More information about the svn-src-all mailing list