---
name: "ibv_create_ah"
section: "3"
platform: "linux"
package: "rdma-core"
version: "65.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/ibv_create_ah"
---

# ibv\_create\_ah(3)

create or destroy an address handle (AH)

## NAME

ibv\_create\_ah, ibv\_destroy\_ah - create or destroy an address handle (AH)

## SYNOPSIS

```
#include <infiniband/verbs.h>

struct ibv_ah *ibv_create_ah(struct ibv_pd *pd,
                             struct ibv_ah_attr *attr);

int ibv_destroy_ah(struct ibv_ah *ah);
```

## DESCRIPTION

**ibv\_create\_ah()** creates an address handle (AH) associated with the protection domain *pd.* The argument *attr* is an ibv\_ah\_attr struct, as defined in \<infiniband/verbs.h\>.

```
struct ibv_ah_attr {
struct ibv_global_route grh;            /* Global Routing Header (GRH) attributes */
uint16_t                dlid;           /* Destination LID */
uint8_t                 sl;             /* Service Level */
uint8_t                 src_path_bits;  /* Source path bits */
uint8_t                 static_rate;    /* Maximum static rate */
uint8_t                 is_global;      /* GRH attributes are valid */
uint8_t                 port_num;       /* Physical port number */
};

struct ibv_global_route {
union ibv_gid           dgid;           /* Destination GID or MGID */
uint32_t                flow_label;     /* Flow label */
uint8_t                 sgid_index;     /* Source GID index */
uint8_t                 hop_limit;      /* Hop limit */
uint8_t                 traffic_class;  /* Traffic class */
};
```

**ibv\_destroy\_ah()** destroys the AH *ah.*

## RETURN VALUE

**ibv\_create\_ah()** returns a pointer to the created AH, or NULL if the request fails, and errno is set to indicate the reason.

## NOTES

If port flag IBV\_QPF\_GRH\_REQUIRED is set then **ibv\_create\_ah()** must be created with definition of 'struct ibv\_ah\_attr { .is\_global = 1; .grh = {...}; }'.

**ibv\_destroy\_ah()** returns 0 on success, or the value of errno on failure (which indicates the failure reason).

## SEE ALSO

[**ibv\_alloc\_pd**(3)](/ibv_alloc_pd/3.md), [**ibv\_init\_ah\_from\_wc**(3)](/ibv_init_ah_from_wc/3.md), [**ibv\_create\_ah\_from\_wc**(3)](/ibv_create_ah_from_wc/3.md)

## AUTHORS

- Dotan Barak \<dotanba@gmail.com\>
