aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2007-05-11 10:20:51 +0000
committerRobert Watson <rwatson@FreeBSD.org>2007-05-11 10:20:51 +0000
commit54d642bbe5699667d74f2117e6c0f58fcfa4384b (patch)
tree830d52c0a835e86532d14a328bcdb1121e33e37a /sys/netinet
parent169db7b25d117b57c38375a01e5141dcede84177 (diff)
downloadsrc-54d642bbe5699667d74f2117e6c0f58fcfa4384b.tar.gz
src-54d642bbe5699667d74f2117e6c0f58fcfa4384b.zip
Reduce network stack oddness: implement .pru_sockaddr and .pru_peeraddr
protocol entry points using functions named proto_getsockaddr and proto_getpeeraddr rather than proto_setsockaddr and proto_setpeeraddr. While it's true that sockaddrs are allocated and set, the net effect is to retrieve (get) the socket address or peer address from a socket, not set it, so align names to that intent.
Notes
Notes: svn path=/head/; revision=169462
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/in_pcb.c22
-rw-r--r--sys/netinet/in_pcb.h4
-rw-r--r--sys/netinet/ip_divert.c4
-rw-r--r--sys/netinet/raw_ip.c4
-rw-r--r--sys/netinet/tcp_usrreq.c6
-rw-r--r--sys/netinet/udp_usrreq.c4
6 files changed, 18 insertions, 26 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index 04bd2cf92a7b..d7d829052a36 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -772,6 +772,9 @@ in_pcbdrop(struct inpcb *inp)
}
}
+/*
+ * Common routines to return the socket addresses associated with inpcbs.
+ */
struct sockaddr *
in_sockaddr(in_port_t port, struct in_addr *addr_p)
{
@@ -787,23 +790,15 @@ in_sockaddr(in_port_t port, struct in_addr *addr_p)
return (struct sockaddr *)sin;
}
-/*
- * The wrapper function will pass down the pcbinfo for this function to lock.
- * The socket must have a valid
- * (i.e., non-nil) PCB, but it should be impossible to get an invalid one
- * except through a kernel programming error, so it is acceptable to panic
- * (or in this case trap) if the PCB is invalid. (Actually, we don't trap
- * because there actually /is/ a programming error somewhere... XXX)
- */
int
-in_setsockaddr(struct socket *so, struct sockaddr **nam)
+in_getsockaddr(struct socket *so, struct sockaddr **nam)
{
struct inpcb *inp;
struct in_addr addr;
in_port_t port;
inp = sotoinpcb(so);
- KASSERT(inp != NULL, ("in_setsockaddr: inp == NULL"));
+ KASSERT(inp != NULL, ("in_getsockaddr: inp == NULL"));
INP_LOCK(inp);
port = inp->inp_lport;
@@ -814,18 +809,15 @@ in_setsockaddr(struct socket *so, struct sockaddr **nam)
return 0;
}
-/*
- * The wrapper function will pass down the pcbinfo for this function to lock.
- */
int
-in_setpeeraddr(struct socket *so, struct sockaddr **nam)
+in_getpeeraddr(struct socket *so, struct sockaddr **nam)
{
struct inpcb *inp;
struct in_addr addr;
in_port_t port;
inp = sotoinpcb(so);
- KASSERT(inp != NULL, ("in_setpeeraddr: inp == NULL"));
+ KASSERT(inp != NULL, ("in_getpeeraddr: inp == NULL"));
INP_LOCK(inp);
port = inp->inp_fport;
diff --git a/sys/netinet/in_pcb.h b/sys/netinet/in_pcb.h
index 70a5aa1547e3..1467b6a6dd04 100644
--- a/sys/netinet/in_pcb.h
+++ b/sys/netinet/in_pcb.h
@@ -391,8 +391,8 @@ void in_pcbnotifyall(struct inpcbinfo *pcbinfo, struct in_addr,
int, struct inpcb *(*)(struct inpcb *, int));
void in_pcbrehash(struct inpcb *);
void in_pcbsetsolabel(struct socket *so);
-int in_setpeeraddr(struct socket *so, struct sockaddr **nam);
-int in_setsockaddr(struct socket *so, struct sockaddr **nam);
+int in_getpeeraddr(struct socket *so, struct sockaddr **nam);
+int in_getsockaddr(struct socket *so, struct sockaddr **nam);
struct sockaddr *
in_sockaddr(in_port_t port, struct in_addr *addr);
void in_pcbsosetlabel(struct socket *so);
diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c
index 2d2a314f575f..a5f904b4ec7e 100644
--- a/sys/netinet/ip_divert.c
+++ b/sys/netinet/ip_divert.c
@@ -635,10 +635,10 @@ struct pr_usrreqs div_usrreqs = {
.pru_bind = div_bind,
.pru_control = in_control,
.pru_detach = div_detach,
- .pru_peeraddr = in_setpeeraddr,
+ .pru_peeraddr = in_getpeeraddr,
.pru_send = div_send,
.pru_shutdown = div_shutdown,
- .pru_sockaddr = in_setsockaddr,
+ .pru_sockaddr = in_getsockaddr,
.pru_sosetlabel = in_pcbsosetlabel
};
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 0fecafae41ac..3eef187c4fbe 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -920,10 +920,10 @@ struct pr_usrreqs rip_usrreqs = {
.pru_control = in_control,
.pru_detach = rip_detach,
.pru_disconnect = rip_disconnect,
- .pru_peeraddr = in_setpeeraddr,
+ .pru_peeraddr = in_getpeeraddr,
.pru_send = rip_send,
.pru_shutdown = rip_shutdown,
- .pru_sockaddr = in_setsockaddr,
+ .pru_sockaddr = in_getsockaddr,
.pru_sosetlabel = in_pcbsosetlabel,
.pru_close = rip_close,
};
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index f28b0ba40d00..8845efcef691 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -618,7 +618,7 @@ tcp_usr_accept(struct socket *so, struct sockaddr **nam)
TCPDEBUG1();
/*
- * We inline in_setpeeraddr and COMMON_END here, so that we can
+ * We inline in_getpeeraddr and COMMON_END here, so that we can
* copy the data of interest and defer the malloc until after we
* release the lock.
*/
@@ -1036,12 +1036,12 @@ struct pr_usrreqs tcp_usrreqs = {
.pru_detach = tcp_usr_detach,
.pru_disconnect = tcp_usr_disconnect,
.pru_listen = tcp_usr_listen,
- .pru_peeraddr = in_setpeeraddr,
+ .pru_peeraddr = in_getpeeraddr,
.pru_rcvd = tcp_usr_rcvd,
.pru_rcvoob = tcp_usr_rcvoob,
.pru_send = tcp_usr_send,
.pru_shutdown = tcp_usr_shutdown,
- .pru_sockaddr = in_setsockaddr,
+ .pru_sockaddr = in_getsockaddr,
.pru_sosetlabel = in_pcbsosetlabel,
.pru_close = tcp_usr_close,
};
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 4e853ca5ae9c..cf2661c74c71 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1143,11 +1143,11 @@ struct pr_usrreqs udp_usrreqs = {
.pru_control = in_control,
.pru_detach = udp_detach,
.pru_disconnect = udp_disconnect,
- .pru_peeraddr = in_setpeeraddr,
+ .pru_peeraddr = in_getpeeraddr,
.pru_send = udp_send,
.pru_sosend = sosend_dgram,
.pru_shutdown = udp_shutdown,
- .pru_sockaddr = in_setsockaddr,
+ .pru_sockaddr = in_getsockaddr,
.pru_sosetlabel = in_pcbsosetlabel,
.pru_close = udp_close,
};