Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Mar 2009 00:19:28 GMT
From:      Stacey Son <sson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 159140 for review
Message-ID:  <200903130019.n2D0JSQA093900@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=159140

Change 159140 by sson@sson_amd64 on 2009/03/13 00:18:47

	Add support for parsing and printing AUT_SOCKINET128 tokens.	

Affected files ...

.. //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#45 edit
.. //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#62 edit

Differences ...

==== //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#45 (text+ko) ====

@@ -26,7 +26,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#44 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#45 $
  */
 
 #ifndef _LIBBSM_H_
@@ -565,6 +565,12 @@
 typedef struct {
 	u_int16_t	family;
 	u_int16_t	port;
+	u_int32_t	addr[4];
+} au_socketinet_ex32_t;
+
+typedef struct {
+	u_int16_t	family;
+	u_int16_t	port;
 	u_int32_t	addr;
 } au_socketinet32_t;
 
@@ -722,7 +728,7 @@
 		au_seq_t		seq;
 		au_socket_t		socket;
 		au_socket_ex32_t	socket_ex32;
-		au_socketinet32_t	sockinet32;
+		au_socketinet_ex32_t	sockinet_ex32;
 		au_socketunix_t		sockunix;
 		au_subject32_t		subj32;
 		au_subject32ex_t	subj32_ex;

==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#62 (text+ko) ====

@@ -32,7 +32,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#61 $
+ * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#62 $
  */
 
 #include <sys/types.h>
@@ -365,6 +365,10 @@
 		fprintf(fp, "/>");
 		break;
 
+	case AUT_SOCKINET128:
+		fprintf(fp, "/>");
+		break;
+
 	case AUT_SUBJECT32:
 		fprintf(fp, "/>");
 		break;
@@ -529,13 +533,16 @@
 			break;
 
 		case AUT_SOCKINET32:
-			fprintf(fp, "<old_socket");
+			fprintf(fp, "<socket-inet ");
 			break;
 
 		case AUT_SOCKUNIX:
-			fprintf(fp, "<old_socket");
+			fprintf(fp, "<socket-unix ");
 			break;
 
+		case AUT_SOCKINET128:
+			fprintf(fp, "<socket-inet6 ");
+
 		case AUT_SUBJECT32:
 			fprintf(fp, "<subject ");
 			break;
@@ -3067,18 +3074,18 @@
 {
 	int err = 0;
 
-	READ_TOKEN_U_INT16(buf, len, tok->tt.sockinet32.family, tok->len,
+	READ_TOKEN_U_INT16(buf, len, tok->tt.sockinet_ex32.family, tok->len,
 	    err);
 	if (err)
 		return (-1);
 
-	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet32.port,
+	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.port,
 	    sizeof(uint16_t), tok->len, err);
 	if (err)
 		return (-1);
 
-	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet32.addr,
-	    sizeof(tok->tt.sockinet32.addr), tok->len, err);
+	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.addr,
+	    sizeof(tok->tt.sockinet_ex32.addr[0]), tok->len, err);
 	if (err)
 		return (-1);
 
@@ -3093,22 +3100,77 @@
 	print_tok_type(fp, tok->id, "socket-inet", raw, xml);
 	if (xml) {
 		open_attr(fp, "type");
-		print_2_bytes(fp, tok->tt.sockinet32.family, "%u");
+		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
+		close_attr(fp);
+		open_attr(fp, "port");
+		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
+		close_attr(fp);
+		open_attr(fp, "addr");
+		print_ip_address(fp, tok->tt.sockinet_ex32.addr[0]);
+		close_attr(fp);
+		close_tag(fp, tok->id);
+	} else {
+		print_delim(fp, del);
+		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
+		print_delim(fp, del);
+		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
+		print_delim(fp, del);
+		print_ip_address(fp, tok->tt.sockinet_ex32.addr[0]);
+	}
+}
+
+/*
+ * socket family	 2 bytes
+ * local port		 2 bytes
+ * socket address	16 bytes
+ */
+static int
+fetch_sock_inet128_tok(tokenstr_t *tok, u_char *buf, int len)
+{
+	int err = 0;
+
+	READ_TOKEN_U_INT16(buf, len, tok->tt.sockinet_ex32.family, tok->len,
+	    err);
+	if (err)
+		return (-1);
+
+	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.port,
+	    sizeof(uint16_t), tok->len, err);
+	if (err)
+		return (-1);
+
+	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.addr,
+	    sizeof(tok->tt.sockinet_ex32.addr), tok->len, err);
+	if (err)
+		return (-1);
+
+	return (0);
+}
+
+static void
+print_sock_inet128_tok(FILE *fp, tokenstr_t *tok, char *del, char raw,
+    __unused char sfrm, int xml)
+{
+
+	print_tok_type(fp, tok->id, "socket-inet6", raw, xml);
+	if (xml) {
+		open_attr(fp, "type");
+		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
 		close_attr(fp);
 		open_attr(fp, "port");
-		print_2_bytes(fp, ntohs(tok->tt.sockinet32.port), "%u");
+		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
 		close_attr(fp);
 		open_attr(fp, "addr");
-		print_ip_address(fp, tok->tt.sockinet32.addr);
+		print_ip_ex_address(fp, AU_IPv6, tok->tt.sockinet_ex32.addr);
 		close_attr(fp);
 		close_tag(fp, tok->id);
 	} else {
 		print_delim(fp, del);
-		print_2_bytes(fp, tok->tt.sockinet32.family, "%u");
+		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
 		print_delim(fp, del);
-		print_2_bytes(fp, ntohs(tok->tt.sockinet32.port), "%u");
+		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
 		print_delim(fp, del);
-		print_ip_address(fp, tok->tt.sockinet32.addr);
+		print_ip_ex_address(fp, AU_IPv6, tok->tt.sockinet_ex32.addr);
 	}
 }
 
@@ -4057,6 +4119,9 @@
 	case AUT_SOCKUNIX:
 		return (fetch_sock_unix_tok(tok, buf, len));
 
+	case AUT_SOCKINET128:
+		return (fetch_sock_inet128_tok(tok, buf, len));
+
 	case AUT_SUBJECT32:
 		return (fetch_subject32_tok(tok, buf, len));
 
@@ -4226,6 +4291,10 @@
 		print_sock_unix_tok(outfp, tok, del, raw, sfrm, AU_PLAIN);
 		return;
 
+	case AUT_SOCKINET128:
+		print_sock_inet128_tok(outfp, tok, del, raw, sfrm, AU_PLAIN);
+		return;
+
 	case AUT_SUBJECT32:
 		print_subject32_tok(outfp, tok, del, raw, sfrm, AU_PLAIN);
 		return;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903130019.n2D0JSQA093900>