umad_register2 - Man Page

register the specified management class and version for port


#include <infiniband/umad.h>

int umad_register2(int port_fd, struct umad_reg_attr *attr, uint32_t *agent_id);


umad_register2() registers for a MAD agent using the provided registration attributes

port_fd the port on which to register the agent

attr The registration attributes as defined by the structure passed.  See below for details of this structure.

agent_id returned on success.  agent_id identifies the kernel MAD agent a MAD is received by or to be sent by.  agent_id is returned in the umad header "struct ib_user_mad" on recv and specified in umad_send when sending.

Registration Attribute Structure

struct umad_reg_attr {
uint8_t    mgmt_class;
uint8_t    mgmt_class_version;
uint32_t   flags;
uint64_t   method_mask[2];
uint32_t   oui;
uint8_t    rmpp_version;

Management class to register for.

Management class version to register for.

Registration flags.  If a flag specified is not supported by the kernel,
an error is returned, and the supported flags are returned in this field.

Current flags are:
UMAD_USER_RMPP -- flag to indicate the kernel should not process
RMPP packets.  All RMPP packets will be treated like individual
MADs.  The user is responsible for implementing the RMPP

A bit mask which indicates which unsolicited methods this agent should
receive.  Setting this array to 0 will result in the agent only
receiving response MADs for which a request was sent.

The oui (in host order) to use for vendor classes 0x30 - 0x4f.
Otherwise ignored.

If the class supports RMPP and kernel RMPP is enabled (the default)
indicate which rmpp_version to use.

Return Value

umad_register2() returns 0 on success and +ERRNO on failure.

See Also



Ira Weiny <>


March 25, 2014 OpenIB Programmer's Manual