ARPA2 Common Libraries
2.6.4
|
Modules | |
Group Types | |
Typedefs | |
typedef bool | group_iterate_upcall(void *updata, group_marks marks, const a2act_t *sender, const a2act_t *recipient, const char *delivery, unsigned deliverylen) |
Callback Function for Group Processing. More... | |
Our blog introduces Groups as a form of Identity and discusses backgrounds in the Identity series.
We define an efficient mechanism to iterate over members, and alter addresses while traffic passes through. These addresses <group>+<member><domain> can protect the privacy of group members while they are communicating in the group. The privacy does not reach a level where administrators could not trace abuse, however.
This is a minimal abstraction over a framework for Policy Rules that also serves Access Control. It uses the <domain> as Access Domain, has a registered Access Type 5a1a2596-1763-36bf-a7b2-814ad98083ca and sets the Access Name to <group>. Triggers are used to provide ^<member><address> where the <address> is the delivery address for the member, as well as the address they can use to contact the group. The Policy Rules also define flags with the properties for the triggers that follow; members may not all read all traffic and some may have special functions.
typedef bool group_iterate_upcall(void *updata, group_marks marks, const a2act_t *sender, const a2act_t *recipient, const char *delivery, unsigned deliverylen) |
Callback Function for Group Processing.
This callback function prototype is used in group_iterate() and will be called for all group members that look like they should receive delivery of the intended communication. It is up to the callback implementation to decide if a fork of the communication is actually created for the recipient.
The sender is described with its Group Identity as supplied in the original call. The recipient is described by their group member name (the alias part after '+') and its coupled delivery address is also given.
[in,out] | updata | is a data structure into which state can accumulate between callbacks. |
[in] | marks | holds the GROUP_xxx marks for the current recipient and delivery addresses. |
[in] | sender | is the sender address. This is a group member address, which usually differs from the Remote Identity that was used in the Communication Access lookup. |
[in] | recipient | is the recipient address. This is a group member address, which usually differs from the delivery address. |
[in] | delivery | is the delivery address for the recipient. It cannot be assumed to be terminated with a NUL character. |
[in] | deliverylen | is the length of the delivery string. |