
gflags Module

Jiri Kuthan

Edited by

Daniel-Constantin Mierla

   Copyright © 2004 FhG FOKUS
     _________________________________________________________

   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. MI 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 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 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. MI 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.

   The paremeter value must be a number in decimal or hexa format

   Example 1-5. set_gflag usage
...
$ openserctl fifo set_gflag 1
$ openserctl fifo set_gflag 0x3
...
     _________________________________________________________

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.

   The paremeter value must be a number in decimal or hexa format

   Example 1-6. reset_gflag usage
...
$ openserctl fifo reset_gflag 1
$ openserctl fifo reset_gflag 0x3
...
     _________________________________________________________

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
$ openserctl fifo is_gflag 0x3
...
     _________________________________________________________

1.5.4. get_gflags

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

   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:

     * User Mailing List -
       http://openser.org/cgi-bin/mailman/listinfo/users
     * Developer Mailing List -
       http://openser.org/cgi-bin/mailman/listinfo/devel

   E-mails regarding any stable OpenSER release should be sent to
   <users@openser.org> and e-mails regarding development versions
   should be sent to <devel@openser.org>.

   If you want to keep the mail private, send it to
   <team@openser.org>.

   3.3. How can I report a bug?

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