Module Name: src
Committed By: christos
Date: Sat Oct 11 21:12:51 UTC 2014
Modified Files:
src/sys/netinet: ip_output.c ip_var.h
Log Message:
exposet multicast option functions which are used by the v6 code now.
To generate a diff of this commit:
cvs rdiff -u -r1.230 -r1.231 src/sys/netinet/ip_output.c
cvs rdiff -u -r1.106 -r1.107 src/sys/netinet/ip_var.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/netinet/ip_output.c
diff -u src/sys/netinet/ip_output.c:1.230 src/sys/netinet/ip_output.c:1.231
--- src/sys/netinet/ip_output.c:1.230 Thu Jun 5 20:11:19 2014
+++ src/sys/netinet/ip_output.c Sat Oct 11 17:12:51 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_output.c,v 1.230 2014/06/06 00:11:19 rmind Exp $ */
+/* $NetBSD: ip_output.c,v 1.231 2014/10/11 21:12:51 christos Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.230 2014/06/06 00:11:19 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.231 2014/10/11 21:12:51 christos Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -136,8 +136,6 @@ static struct mbuf *ip_insertoptions(str
static struct ifnet *ip_multicast_if(struct in_addr *, int *);
static void ip_mloopback(struct ifnet *, struct mbuf *,
const struct sockaddr_in *);
-static int ip_setmoptions(struct inpcb *, const struct sockopt *);
-static int ip_getmoptions(struct inpcb *, struct sockopt *);
extern pfil_head_t *inet_pfil_hook; /* XXX */
@@ -1003,7 +1001,7 @@ ip_ctloutput(int op, struct socket *so,
case IP_MULTICAST_LOOP:
case IP_ADD_MEMBERSHIP:
case IP_DROP_MEMBERSHIP:
- error = ip_setmoptions(inp, sopt);
+ error = ip_setmoptions(&inp->inp_moptions, sopt);
break;
case IP_PORTRANGE:
@@ -1151,7 +1149,7 @@ ip_ctloutput(int op, struct socket *so,
case IP_MULTICAST_LOOP:
case IP_ADD_MEMBERSHIP:
case IP_DROP_MEMBERSHIP:
- error = ip_getmoptions(inp, sopt);
+ error = ip_getmoptions(inp->inp_moptions, sopt);
break;
case IP_PORTRANGE:
@@ -1364,10 +1362,10 @@ ip_getoptval(const struct sockopt *sopt,
/*
* Set the IP multicast options in response to user setsockopt().
*/
-static int
-ip_setmoptions(struct inpcb *inp, const struct sockopt *sopt)
+int
+ip_setmoptions(struct ip_moptions **pimo, const struct sockopt *sopt)
{
- struct ip_moptions *imo = inp->inp_moptions;
+ struct ip_moptions *imo = *pimo;
struct in_addr addr;
struct ip_mreq lmreq, *mreq;
struct ifnet *ifp;
@@ -1387,7 +1385,7 @@ ip_setmoptions(struct inpcb *inp, const
imo->imo_multicast_ttl = IP_DEFAULT_MULTICAST_TTL;
imo->imo_multicast_loop = IP_DEFAULT_MULTICAST_LOOP;
imo->imo_num_memberships = 0;
- inp->inp_moptions = imo;
+ *pimo = imo;
}
switch (sopt->sopt_name) {
@@ -1583,7 +1581,7 @@ ip_setmoptions(struct inpcb *inp, const
imo->imo_multicast_loop == IP_DEFAULT_MULTICAST_LOOP &&
imo->imo_num_memberships == 0) {
kmem_free(imo, sizeof(*imo));
- inp->inp_moptions = NULL;
+ *pimo = NULL;
}
return error;
@@ -1592,10 +1590,9 @@ ip_setmoptions(struct inpcb *inp, const
/*
* Return the IP multicast options in response to user getsockopt().
*/
-static int
-ip_getmoptions(struct inpcb *inp, struct sockopt *sopt)
+int
+ip_getmoptions(struct ip_moptions *imo, struct sockopt *sopt)
{
- struct ip_moptions *imo = inp->inp_moptions;
struct in_addr addr;
struct in_ifaddr *ia;
uint8_t optval;
Index: src/sys/netinet/ip_var.h
diff -u src/sys/netinet/ip_var.h:1.106 src/sys/netinet/ip_var.h:1.107
--- src/sys/netinet/ip_var.h:1.106 Thu Jun 5 19:48:16 2014
+++ src/sys/netinet/ip_var.h Sat Oct 11 17:12:51 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_var.h,v 1.106 2014/06/05 23:48:16 rmind Exp $ */
+/* $NetBSD: ip_var.h,v 1.107 2014/10/11 21:12:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1993
@@ -234,6 +234,9 @@ int rip_output(struct mbuf *, ...);
int rip_usrreq(struct socket *,
int, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *);
+int ip_setmoptions(struct ip_moptions **, const struct sockopt *sopt);
+int ip_getmoptions(struct ip_moptions *, struct sockopt *sopt);
+
/* IP Flow interface. */
void ipflow_init(void);
void ipflow_poolinit(void);