gflags Module

Jiri Kuthan

Edited by

Daniel-Constantin Mierla


Table of Contents
1. User's 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. FIFO Commands
1.5.1. set_gflag
1.5.2. reset_gflag
1.5.3. is_gflag
1.5.4. get_gflags
2. Developer's Guide
3. Frequently Asked Questions
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. set_gflag usage
1-8. get_gflags usage

Chapter 1. User's 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 commands to FIFO server that can be used to change the global flags via FIFO interface. The FIFO 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 from the range 1..31.

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE and BRANCH_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.

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE and BRANCH_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.

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE and BRANCH_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. FIFO Commands

1.5.1. set_gflag

Set the value of some flags to 1. The function accepts one parameter which is the flag bitmap/mask specifing the flags to be set.

Example 1-5. set_gflag usage

...
$ openserctl fifo set_gflag 1
...

1.5.2. reset_gflag

Reset the value of some flags to 0. The function accepts one parameter which is the flag bitmap/mask specifing the flags to be reset.

Example 1-6. reset_gflag usage

...
$ openserctl fifo reset_gflag 1
...

1.5.3. is_gflag

Return the status of a set of flags. The function accepts one parameter which is the flag bitmap/mask specifing the flags to be checked.

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. set_gflag usage

...
$ openserctl fifo is_gflag 1
...

1.5.4. get_gflags

Return the bitmap with all flags. The FIFO function gets no parameters and returns the bitmap in hexa format on the first line and decimal format on the second line.

Example 1-8. get_gflags usage

...
$ openserctl fifo get_gflags
0x3039
12345
...

Chapter 2. Developer's Guide

The module does not provide any API to use in other OpenSER modules.


Chapter 3. Frequently Asked Questions

3.1. Where can I find more about OpenSER?
3.2. Where can I post a question about this module?
3.3. How can I report a bug?

3.1. Where can I find more about OpenSER?

Take a look at http://openser.org/.

3.2. Where can I post a question about this module?

First at all check if your question was already answered on one of our mailing lists:

E-mails regarding any stable OpenSER release should be sent to and e-mails regarding development versions should be sent to .

If you want to keep the mail private, send it to .

3.3. How can I report a bug?

Please follow the guidelines provided at: http://sourceforge.net/tracker/?group_id=139143.