From 030a0272db4aff87122ea90ae1de1d348d84b84f Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Thu, 18 Oct 2007 10:18:47 -0700 Subject: [PATCH] librdmacm/cma: provide wrapper functions to extract src/dst addresses Provide wrapper functions to retrieve the source and destination addresses. This is based on feedback from Doug Ledford. Signed-off-by: Sean Hefty --- Makefile.am | 2 ++ include/rdma/rdma_cma.h | 10 ++++++++++ man/rdma_bind_addr.3 | 3 ++- man/rdma_cm.7 | 1 + man/rdma_get_dst_port.3 | 3 ++- man/rdma_get_local_addr.3 | 17 +++++++++++++++++ man/rdma_get_peer_addr.3 | 16 ++++++++++++++++ man/rdma_get_src_port.3 | 3 ++- man/rdma_resolve_addr.3 | 3 ++- src/librdmacm.map | 2 ++ 10 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 man/rdma_get_local_addr.3 create mode 100644 man/rdma_get_peer_addr.3 diff --git a/Makefile.am b/Makefile.am index 1195bd97..77782dab 100644 --- a/Makefile.am +++ b/Makefile.am @@ -49,6 +49,8 @@ man_MANS = \ man/rdma_get_devices.3 \ man/rdma_get_src_port.3 \ man/rdma_get_dst_port.3 \ + man/rdma_get_local_addr.3 \ + man/rdma_get_peer_addr.3 \ man/rdma_join_multicast.3 \ man/rdma_leave_multicast.3 \ man/rdma_listen.3 \ diff --git a/include/rdma/rdma_cma.h b/include/rdma/rdma_cma.h index b0848d52..64b3008f 100644 --- a/include/rdma/rdma_cma.h +++ b/include/rdma/rdma_cma.h @@ -494,6 +494,16 @@ static inline uint16_t rdma_get_dst_port(struct rdma_cm_id *id) ((struct sockaddr_in *) &id->route.addr.dst_addr)->sin_port; } +static inline struct sockaddr *rdma_get_local_addr(struct rdma_cm_id *id) +{ + return &id->route.addr.src_addr; +} + +static inline struct sockaddr *rdma_get_peer_addr(struct rdma_cm_id *id) +{ + return &id->route.addr.dst_addr; +} + /** * rdma_get_devices - Get list of RDMA devices currently available. * @num_devices: If non-NULL, set to the number of devices returned. diff --git a/man/rdma_bind_addr.3 b/man/rdma_bind_addr.3 index bed7f0b2..46c48a39 100644 --- a/man/rdma_bind_addr.3 +++ b/man/rdma_bind_addr.3 @@ -25,4 +25,5 @@ address. If used to bind to port 0, the rdma_cm will select an available port and return it to the user. .SH "SEE ALSO" -rdma_create_id(3), rdma_listen(3), rdma_resolve_addr(3), rdma_create_qp(3) +rdma_create_id(3), rdma_listen(3), rdma_resolve_addr(3), rdma_create_qp(3), +rdma_get_local_addr(3), rdma_get_src_port(3) diff --git a/man/rdma_cm.7 b/man/rdma_cm.7 index bfb3493f..f2e1319e 100644 --- a/man/rdma_cm.7 +++ b/man/rdma_cm.7 @@ -110,5 +110,6 @@ rdma_resolve_route(3), rdma_connect(3), rdma_listen(3), rdma_accept(3), rdma_reject(3), rdma_join_multicast(3), rdma_leave_multicast(3), rdma_notify(3), rdma_ack_cm_event(3), rdma_disconnect(3), rdma_destroy_qp(3), rdma_destroy_id(3), rdma_destroy_event_channel(3), rdma_get_devices(3), rdma_free_devices(3), +rdma_get_peer_addr(3), rdma_get_local_addr(3), rdma_get_dst_port(3), rdma_get_src_port(3), rdma_set_option(3) ucmatose(1), udaddy(1), mckey(1), rping(1) diff --git a/man/rdma_get_dst_port.3 b/man/rdma_get_dst_port.3 index 88e6ec2e..92932e95 100644 --- a/man/rdma_get_dst_port.3 +++ b/man/rdma_get_dst_port.3 @@ -13,4 +13,5 @@ RDMA identifier. Returns the remote port number for an rdma_cm_id that has been bound to a remote address. .SH "SEE ALSO" -rdma_connect(3), rdma_accept(3), rdma_get_cm_event(3), rdma_get_src_port(3) +rdma_connect(3), rdma_accept(3), rdma_get_cm_event(3), rdma_get_src_port(3), +rdma_get_local_addr(3), rdma_get_peer_addr(3) diff --git a/man/rdma_get_local_addr.3 b/man/rdma_get_local_addr.3 new file mode 100644 index 00000000..80856270 --- /dev/null +++ b/man/rdma_get_local_addr.3 @@ -0,0 +1,17 @@ +.TH "RDMA_GET_LOCAL_ADDR" 3 "2007-05-15" "librdmacm" "Librdmacm Programmer's Manual" librdmacm +.SH NAME +rdma_get_local_addr \- Returns the local IP address of a bound rdma_cm_id. +.SH SYNOPSIS +.B "#include " +.P +.B "struct sockaddr *" rdma_get_local_addr +.BI "(struct rdma_cm_id *" id ");" +.SH ARGUMENTS +.IP "id" 12 +RDMA identifier. +.SH "DESCRIPTION" +Returns the local IP address for an rdma_cm_id that has been bound to +a local device. +.SH "SEE ALSO" +rdma_bind_addr(3), rdma_resolve_addr(3), rdma_get_src_port(3), +rdma_get_dst_port(3), rdma_get_peer_addr(3) diff --git a/man/rdma_get_peer_addr.3 b/man/rdma_get_peer_addr.3 new file mode 100644 index 00000000..880e9c57 --- /dev/null +++ b/man/rdma_get_peer_addr.3 @@ -0,0 +1,16 @@ +.TH "RDMA_GET_PEER_ADDR" 3 "2007-05-15" "librdmacm" "Librdmacm Programmer's Manual" librdmacm +.SH NAME +rdma_get_peer_addr \- Returns the remote IP address of a bound rdma_cm_id. +.SH SYNOPSIS +.B "#include " +.P +.B "struct sockaddr *" rdma_get_peer_addr +.BI "(struct rdma_cm_id *" id ");" +.SH ARGUMENTS +.IP "id" 12 +RDMA identifier. +.SH "DESCRIPTION" +Returns the remote IP address associated with an rdma_cm_id. +.SH "SEE ALSO" +rdma_resolve_addr(3), rdma_get_src_port(3), rdma_get_dst_port(3), +rdma_get_local_addr(3) diff --git a/man/rdma_get_src_port.3 b/man/rdma_get_src_port.3 index 63ee5646..0a2f4458 100644 --- a/man/rdma_get_src_port.3 +++ b/man/rdma_get_src_port.3 @@ -13,4 +13,5 @@ RDMA identifier. Returns the local port number for an rdma_cm_id that has been bound to a local address. .SH "SEE ALSO" -rdma_bind_addr(3), rdma_resolve_addr(3), rdma_get_dst_port(3) +rdma_bind_addr(3), rdma_resolve_addr(3), rdma_get_dst_port(3), +rdma_get_local_addr(3), rdma_get_peer_addr(3) diff --git a/man/rdma_resolve_addr.3 b/man/rdma_resolve_addr.3 index 32cd5cf0..11d737de 100644 --- a/man/rdma_resolve_addr.3 +++ b/man/rdma_resolve_addr.3 @@ -33,4 +33,5 @@ an RDMA device. This call is typically made from the active side of a connection before calling rdma_resolve_route and rdma_connect. .SH "SEE ALSO" rdma_create_id(3), rdma_resolve_route(3), rdma_connect(3), rdma_create_qp(3), -rdma_get_cm_event(3), rdma_bind_addr(3) +rdma_get_cm_event(3), rdma_bind_addr(3), rdma_get_src_port(3), +rdma_get_dst_port(3), rdma_get_local_addr(3), rdma_get_peer_addr(3) diff --git a/src/librdmacm.map b/src/librdmacm.map index 0f042fa1..84cec7fc 100644 --- a/src/librdmacm.map +++ b/src/librdmacm.map @@ -25,5 +25,7 @@ RDMACM_1.0 { rdma_free_devices; rdma_event_str; rdma_set_option; + rdma_get_local_addr; + rdma_get_peer_addr; local: *; }; -- 2.46.0