gflags Module

Jiri Kuthan

Edited by

Daniel-Constantin Mierla

Revision History
Revision $Revision: 3898 $$Date: 2008-03-08 00:03:56 +0100 (Sat, 08 Mar 2008) $

Table of Contents

1. Admin Guide
1.1. Overview
1.2. Dependencies
1.3. Exported Parameters
1.3.1. initial (integer)
1.4. Exported Functions
1.4.1. set_gflag(flag)
1.4.2. reset_gflag(flag)
1.4.3. is_gflag(flag)
1.5. MI Commands
1.5.1. set_gflag
1.5.2. reset_gflag
1.5.3. is_gflag
1.5.4. get_gflags

List of Examples

1.1. initial parameter usage
1.2. set_gflag() usage
1.3. reset_gflag() usage
1.4. is_gflag() usage
1.5. set_gflag usage
1.6. reset_gflag usage
1.7. is_gflag usage
1.8. get_gflags usage

Chapter 1. Admin Guide

1.1. Overview

gflags module (global flags) keeps a bitmap of flags in shared memory and may be used to change behaviour of server based on value of the flags. Example:

	if (is_gflag("1")) {
		t_relay("udp:10.0.0.1:5060");
	} else {
		t_relay("udp:10.0.0.2:5060");
	}
	

The benefit of this module is the value of the switch flags can be manipulated by external applications such as web interface or command line tools. The size of bitmap is 32.

The module exports external commands that can be used to change the global flags via Management Interface. The MI commands are: “set_gflag”, “reset_gflag” and “is_gflag”.

1.2. Dependencies

The module depends on the following modules (in the other words the listed modules must be loaded before this module):

  • none

1.3. Exported Parameters

1.3.1. initial (integer)

The initial value of global flags bitmap.

Default value is “0”.

Example 1.1. initial parameter usage

modparam("gflags", "initial", 15)
		

1.4. Exported Functions

1.4.1. set_gflag(flag)

Set the bit at the position “flag” in global flags.

flag” can have a value in the range of 0..31.

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE and LOCAL_ROUTE.

Example 1.2. set_gflag() usage

...
set_gflag("4");
...

1.4.2. reset_gflag(flag)

Reset the bit at the position “flag” in global flags.

flag” can have a value in the range of 0..31.

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE and LOCAL_ROUTE.

Example 1.3. reset_gflag() usage

...
reset_gflag("4");
...

1.4.3. is_gflag(flag)

Check if bit at the position “flag” in global flags is set.

flag” can have a value in the range of 0..31.

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE and LOCAL_ROUTE.

Example 1.4. is_gflag() usage

...
if(is_gflag("4"))
{
	log("global flag 4 is set\n");
} else {
	log("global flag 4 is not set\n");
};
...

1.5. MI Commands

Functions that check or change some flags accepts one parameter which is the flag bitmap/mask specifing the corresponding flags. It is not possible to specify directly the flag position that should be changed as in the functions available in the routing script.

1.5.1. set_gflag

Set the value of some flags (specified by bitmask) to 1.

The parameter value must be a bitmask in decimal or hexadecimal format. The bitmask has a 32 bit size.

Example 1.5. set_gflag usage

...
$ kamctl fifo set_gflag 1
$ kamctl fifo set_gflag 0x3
...

1.5.2. reset_gflag

Reset the value of some flags to 0.

The parameter value must be a bitmask in decimal or hexadecimal format. The bitmask has a 32 bit size.

Example 1.6.  reset_gflag usage

...
$ kamctl fifo reset_gflag 1
$ kamctl fifo reset_gflag 0x3
...

1.5.3. is_gflag

Returns true if the all the flags from the bitmask are set.

The parameter value must be a bitmask in decimal or hexadecimal format. The bitmask has a 32 bit size.

The function returns TRUE if all the flags from the set are set and FALSE if at least one is not set.

Example 1.7. is_gflag usage

...
$ kamctl fifo set_gflag 1024
$ kamctl fifo is_gflag 1024
TRUE
$ kamctl fifo is_gflag 1025
TRUE
$ kamctl fifo is_gflag 1023
FALSE
$ kamctl fifo set_gflag 0x10
$ kamctl fifo is_gflag 1023
TRUE
$ kamctl fifo is_gflag 1007
FALSE
$ kamctl fifo is_gflag 16
TRUE
...

1.5.4. get_gflags

Return the bitmap with all flags. The function gets no parameters and returns the bitmap in hexadecimal and decimal format.

Example 1.8.  get_gflags usage

...
$ kamctl fifo get_gflags
0x3039
12345
...