---
name: "cpg_zcb_mcast_joined"
section: "3"
platform: "linux"
package: "libcpg-dev"
version: "3.1.9-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cpg_zcb_mcast_joined"
---

# cpg\_zcb\_mcast\_joined(3)

Multicasts a zero copy buffer to all groups joined to a handle

## NAME

cpg\_mcast\_joined - Multicasts a zero copy buffer to all groups joined to a handle

## SYNOPSIS

**#include \<sys/uio.h\>** **#include \<corosync/cpg.h\>**

**int cpg\_zcb\_mcast\_joined(cpg\_handle\_t** *handle***, cpg\_guarantee\_t** *guarantee***, const void \****buffer**,***int** *msg\_len* **);**

## DESCRIPTION

The **cpg\_zcb\_mcast\_joined** function will multicast a zero copy buffer message to all the processes that have been joined with the **[cpg\_join(3)](/cpg_join/3.md)** function for the same group name. Messages that are sent to any of the groups joined to the parameter *handle* will be delivered to all subscribed processes in the system.

The argument *guarantee* requests a delivery guarantee for the message to be sent.  The cpg\_guarantee\_t type is defined by:

-

  ```
  typedef enum {
          CPG_TYPE_UNORDERED,     /* not implemented */
          CPG_TYPE_FIFO,          /* same as agreed */
          CPG_TYPE_AGREED,        /* implemented */
          CPG_TYPE_SAFE           /* not implemented */
  } cpg_guarantee_t;
  ```

-

  The meanings of the cpg\_guarantee\_t typedef are:

- **CPG\_TYPE\_UNORDERED**

  Messages are guaranteed to be delivered, but with no particular order.  This mode is unimplemented in the CPG library.

- **CPG\_TYPE\_FIFO**

  Messages are guaranteed to be delivered in first sent first delivery order. In fact, this guarantee is equivalent to the CPG\_TYPE\_AGREED guarantee.

- **CPG\_TYPE\_AGREED**

  All processors must agree on the order of delivery.  If a message is sent from two or more processes at about the same time, the delivery will occur in the same order to all processes.

- **CPG\_TYPE\_SAFE**

  All processes must agree on the order of delivery.  Further all processes must have a copy of the message before any delivery takes place.  This mode is unimplemented in the CPG library.

The *msg* argument describes the zero copy buffer which is used to transmit a message. this buffer must be allocated by **[cpg\_zcb\_alloc(3)](/cpg_zcb_alloc/3.md).**

The *msg\_len* argument describes the number of bytes to be transmitted in the zero copy buffer.

## RETURN VALUE

This call returns the CS\_OK value if successful, otherwise an error is returned.

## ERRORS

The errors are undocumented.

## SEE ALSO

[**cpg\_overview**(3)](/cpg_overview/3.md), [**cpg\_initialize**(3)](/cpg_initialize/3.md), [**cpg\_finalize**(3)](/cpg_finalize/3.md), [**cpg\_fd\_get**(3)](/cpg_fd_get/3.md), [**cpg\_dispatch**(3)](/cpg_dispatch/3.md), [**cpg\_join**(3)](/cpg_join/3.md), [**cpg\_leave**(3)](/cpg_leave/3.md), [**cpg\_mcast\_joined**(3)](/cpg_mcast_joined/3.md), [**cpg\_membership\_get**(3)](/cpg_membership_get/3.md) [**cpg\_zcb\_alloc**(3)](/cpg_zcb_alloc/3.md) [**cpg\_zcb\_free**(3)](/cpg_zcb_free/3.md) [**cpg\_zcb\_mcast\_joined**(3)](/cpg_zcb_mcast_joined/3.md) [**cpg\_context\_get**(3)](/cpg_context_get/3.md) [**cpg\_context\_set**(3)](/cpg_context_set/3.md) [**cpg\_local\_get**(3)](/cpg_local_get/3.md)

**CS\_ERR\_TRY\_AGAIN** Resource temporarily unavailable

**CS\_ERR\_INVALID\_PARAM** Invalid argument

**CS\_ERR\_ACCESS** Permission denied

**CS\_ERR\_LIBRARY** The connection failed

**CS\_ERR\_INTERRUPT** System call interrupted by a signal

**CS\_ERR\_NOT\_SUPPORTED** The requested protocol/functionality not supported

**CS\_ERR\_MESSAGE\_ERROR** Incorrect auth message received

**CS\_ERR\_NO\_MEMORY** Not enough memory to complete the requested task
