IBM Books

Group Services Programming Guide and Reference


General representation structure

If the HA_GS_SUBSCRIPTION_SPECIAL_DATA flag is set in the subscription notification, the gs_subscription_special_data field will point to a special data block of the format:

typedef struct {
	int                    gs_length;
	unsigned int           gs_flag;
	ha_gs_special_block_t  *gs_special_data;
} ha_gs_special_data_t;

This block acts as a header to point to a linked list of ha_gs_special_data_t elements.

gs_length

The number of ha_gs_special_data_t elements in the list.

gs_flag

The result of OR'ing together all of the flags defining the types of ha_gs_special_data_t data included in the list. This allows the subscriber to quickly investigate this flag. If none of the included ha_gs_special_data_t types are of interest, it need not continue investigating the block any further.

gs_special_data
A pointer to the first ha_gs_special_data_t element in the list.

Each ha_gs_special_block_t contains a single type of subscription special data and looks like the following:

typedef struct {
	unsigned int           gs_special_flag;
	ha_gs_special_block_t  *gs_next_special_block;
	int                    gs_special_num_entries;
	int                    gs_special_length;
	void                   *gs_special;
} ha_gs_special_block_t;

This block contains the actual subscription special data.

gs_special_flag

The flag identifying the type of this block's special data.

gs_next_special_block

A pointer to the next ha_gs_special_block_t in the list. If this is the last ha_gs_special_block_t, this value will be NULL.

gs_special_num_entries

The number of entries contained in the data pointed to by the gs_special field for this ha_gs_special_block_t. If this entry is one, then the gs_special_length field is the total size of the data. If this entry is greater than one, the total number of bytes is this value multiplied by gs_special_length.

gs_special_length

The number of bytes in each of the entries in the block pointed to by the gs_special field for this ha_gs_special_block_t.

gs_special

A pointer to the actual data.

The gs_flag field in the gs_special_data_t block and the gs_special_flag field in each ha_gs_special_block_t may contain the following flags. The gs_special_flag field contains only one, whichever kind of data its ha_gs_special_block_t represents. The gs_flag will contain all of the individual gs_special_flags OR'ed together.

typedef enum {
	HA_GS_ADAPTER_DEATH_ARRAY           = 0x01,
	HA_GS_CURRENT_ADAPTER_ALIAS_ARRAY   = 0x02,
	HA_GS_CHANGING_ADAPTER_ALIAS_ARRAY  = 0x04
} ha_gs_subscription_special_type_t;

These flags describe the contents of the ha_gs_special_block_t that may be included.

HA_GS_ADAPTER_DEATH_ARRAY

Indicates that there is a ha_gs_special_block_t containing the "death reasons" for each adapter listed in the gs_changing_membership field.

HA_GS_CURRENT_ADAPTER_ALIAS_ARRAY

Indicates that there is a ha_gs_special_block_t containing the alias IP addresses of each adapter listed in the gs_current_membership field.

HA_GS_CHANGING_ADAPTER_ALIAS_ARRAY

Indicates that there is a ha_gs_special_block_t containing the alias IP addresses of each adapter listed in the gs_changing_membership field.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]