2004-08-30  Roland McGrath  <roland@redhat.com>

	* net.c (sockipoptions): Add some options.
	[SOL_IPV6] (sockipv6options): New variable.
	(sys_getsockopt, printsockopt): Use it for SOL_IPV6 level.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#128391.
diff --git a/net.c b/net.c
index dd6fb64..43bc3cd 100644
--- a/net.c
+++ b/net.c
@@ -673,10 +673,79 @@
 #ifdef IP_RECVIFINDEX
 	{ IP_RECVIFINDEX,	"IP_RECVIFINDEX"	},
 #endif
+#ifdef IP_MSFILTER
+	{ IP_MSFILTER,		"IP_MSFILTER"		},
+#endif
+#ifdef MCAST_MSFILTER
+	{ MCAST_MSFILTER,	"MCAST_MSFILTER"	},
+#endif
+#ifdef IP_FREEBIND
+	{ IP_FREEBIND,		"IP_FREEBIND"		},
+#endif
 	{ 0,			NULL			},
 };
 #endif /* SOL_IP */
 
+#ifdef SOL_IPV6
+static struct xlat sockipv6options[] = {
+#ifdef IPV6_ADDRFORM
+	{ IPV6_ADDRFORM,	"IPV6_ADDRFORM"		},
+#endif
+#ifdef MCAST_FILTER
+	{ MCAST_FILTER,		"MCAST_FILTER"		},
+#endif
+#ifdef IPV6_PKTOPTIONS
+	{ IPV6_PKTOPTIONS,	"IPV6_PKTOPTIONS"	},
+#endif
+#ifdef IPV6_MTU
+	{ IPV6_MTU,		"IPV6_MTU"		},
+#endif
+#ifdef IPV6_V6ONLY
+	{ IPV6_V6ONLY,		"IPV6_V6ONLY"		},
+#endif
+#ifdef IPV6_PKTINFO
+	{ IPV6_PKTINFO,		"IPV6_PKTINFO"		},
+#endif
+#ifdef IPV6_HOPLIMIT
+	{ IPV6_HOPLIMIT,	"IPV6_HOPLIMIT"		},
+#endif
+#ifdef IPV6_RTHDR
+	{ IPV6_RTHDR,		"IPV6_RTHDR"		},
+#endif
+#ifdef IPV6_HOPOPTS
+	{ IPV6_HOPOPTS,		"IPV6_HOPOPTS"		},
+#endif
+#ifdef IPV6_DSTOPTS
+	{ IPV6_DSTOPTS,		"IPV6_DSTOPTS"		},
+#endif
+#ifdef IPV6_FLOWINFO
+	{ IPV6_FLOWINFO,	"IPV6_FLOWINFO"		},
+#endif
+#ifdef IPV6_UNICAST_HOPS
+	{ IPV6_UNICAST_HOPS,	"IPV6_UNICAST_HOPS"	},
+#endif
+#ifdef IPV6_MULTICAST_HOPS
+	{ IPV6_MULTICAST_HOPS,	"IPV6_MULTICAST_HOPS"	},
+#endif
+#ifdef IPV6_MULTICAST_LOOP
+	{ IPV6_MULTICAST_LOOP,	"IPV6_MULTICAST_LOOP"	},
+#endif
+#ifdef IPV6_MULTICAST_IF
+	{ IPV6_MULTICAST_IF,	"IPV6_MULTICAST_IF"	},
+#endif
+#ifdef IPV6_MTU_DISCOVER
+	{ IPV6_MTU_DISCOVER,	"IPV6_MTU_DISCOVER"	},
+#endif
+#ifdef IPV6_RECVERR
+	{ IPV6_RECVERR,		"IPV6_RECVERR"		},
+#endif
+#ifdef IPV6_FLOWINFO_SEND
+	{ IPV6_FLOWINFO_SEND,	"IPV6_FLOWINFO_SEND"	},
+#endif
+	{ 0,			NULL			},
+};
+#endif /* SOL_IPV6 */
+
 #ifdef SOL_IPX
 static struct xlat sockipxoptions[] = {
 	{ IPX_TYPE,     "IPX_TYPE"      },
@@ -1378,6 +1447,11 @@
 			printxval(sockipoptions, tcp->u_arg[2], "IP_???");
 			break;
 #endif
+#ifdef SOL_IPV6
+		case SOL_IPV6:
+			printxval(sockipv6options, tcp->u_arg[2], "IPV6_???");
+			break;
+#endif
 #ifdef SOL_IPX
 		case SOL_IPX:
 			printxval(sockipxoptions, tcp->u_arg[2], "IPX_???");
@@ -1505,6 +1579,11 @@
 		printxval(sockipoptions, name, "IP_???");
 		break;
 #endif
+#ifdef SOL_IPV6
+	    case SOL_IPV6:
+		printxval(sockipv6options, name, "IPV6_???");
+		break;
+#endif
 #ifdef SOL_IPX
 	    case SOL_IPX:
 		printxval(sockipxoptions, name, "IPX_???");