gflags Module
     __________________________________________________________

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

              1.5.1. set_gflag
              1.5.2. reset_gflag
              1.5.3. is_gflag
              1.5.4. get_gflags

   2. Contributors

        2.1. By Commit Statistics
        2.2. By Commit Activity

   3. Documentation

        3.1. Contributors

   List of Tables

   2.1. Top contributors by DevScore^(1), authored commits^(2) and
          lines added/removed^(3)

   2.2. Most recently active contributors^(1) to this module

   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.

   The “flag” (int) parameter 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.

   The “flag” (int) parameter 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.

   The “flag” (int) parameter 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. Exported MI Functions

   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 hexa
   format. The bitmaks has a 32 bit size.

   Example 1.5. set_gflag usage
...
$ opensips-cli -x mi set_gflag 1
$ opensips-cli -x mi 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 hexa
   format. The bitmaks has a 32 bit size.

   Example 1.6.  reset_gflag usage
...
$ opensips-cli -x mi reset_gflag 1
$ opensips-cli -x mi 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 hexa
   format. The bitmaks 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
...
$ opensips-cli -x mi set_gflag 1024
$ opensips-cli -x mi is_gflag 1024
TRUE
$ opensips-cli -x mi is_gflag 1025
TRUE
$ opensips-cli -x mi is_gflag 1023
FALSE
$ opensips-cli -x mi set_gflag 0x10
$ opensips-cli -x mi is_gflag 1023
TRUE
$ opensips-cli -x mi is_gflag 1007
FALSE
$ opensips-cli -x mi 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 hexa and decimal format.

   Example 1.8.  get_gflags usage
...
$ opensips-cli -x mi get_gflags
0x3039
12345
...

Chapter 2. Contributors

2.1. By Commit Statistics

   Table 2.1. Top contributors by DevScore^(1), authored
   commits^(2) and lines added/removed^(3)
     Name DevScore Commits Lines ++ Lines --
   1. Bogdan-Andrei Iancu (@bogdan-iancu) 40 30 422 325
   2. Daniel-Constantin Mierla (@miconda) 14 12 42 22
   3. Liviu Chircu (@liviuchircu) 9 7 21 43
   4. Henning Westerholt (@henningw) 8 6 42 31
   5. Jiri Kuthan (@jiriatipteldotorg) 8 4 278 4
   6. Razvan Crainea (@razvancrainea) 7 5 23 23
   7. Vlad Patrascu (@rvlad-patrascu) 7 4 88 94
   8. Richard Revels 3 1 24 11
   9. Anca Vamanu 3 1 6 3
   10. Konstantin Bokarius 3 1 2 5

   All remaining contributors: Andrei Pelinescu-Onciul, Peter
   Lemenkov (@lemenkov), Edson Gellert Schubert, Klaus Darilion,
   Ancuta Onofrei.

   (1) DevScore = author_commits + author_lines_added /
   (project_lines_added / project_commits) + author_lines_deleted
   / (project_lines_deleted / project_commits)

   (2) including any documentation-related commits, excluding
   merge commits. Regarding imported patches/code, we do our best
   to count the work on behalf of the proper owner, as per the
   "fix_authors" and "mod_renames" arrays in
   opensips/doc/build-contrib.sh. If you identify any
   patches/commits which do not get properly attributed to you,
   please submit a pull request which extends "fix_authors" and/or
   "mod_renames".

   (3) ignoring whitespace edits, renamed files and auto-generated
   files

2.2. By Commit Activity

   Table 2.2. Most recently active contributors^(1) to this module
                      Name                   Commit Activity
   1.  Vlad Patrascu (@rvlad-patrascu)     May 2017 - Apr 2019
   2.  Bogdan-Andrei Iancu (@bogdan-iancu) Oct 2005 - Apr 2019
   3.  Razvan Crainea (@razvancrainea)     Sep 2011 - Mar 2019
   4.  Peter Lemenkov (@lemenkov)          Jun 2018 - Jun 2018
   5.  Liviu Chircu (@liviuchircu)         Mar 2014 - Jun 2018
   6.  Anca Vamanu                         Sep 2009 - Sep 2009
   7.  Richard Revels                      Aug 2008 - Aug 2008
   8.  Daniel-Constantin Mierla (@miconda) Oct 2005 - Jun 2008
   9.  Konstantin Bokarius                 Mar 2008 - Mar 2008
   10. Edson Gellert Schubert              Feb 2008 - Feb 2008

   All remaining contributors: Henning Westerholt (@henningw),
   Ancuta Onofrei, Klaus Darilion, Andrei Pelinescu-Onciul, Jiri
   Kuthan (@jiriatipteldotorg).

   (1) including any documentation-related commits, excluding
   merge commits

Chapter 3. Documentation

3.1. Contributors

   Last edited by: Vlad Patrascu (@rvlad-patrascu), Razvan Crainea
   (@razvancrainea), Peter Lemenkov (@lemenkov), Liviu Chircu
   (@liviuchircu), Bogdan-Andrei Iancu (@bogdan-iancu), Richard
   Revels, Daniel-Constantin Mierla (@miconda), Konstantin
   Bokarius, Edson Gellert Schubert, Henning Westerholt
   (@henningw), Klaus Darilion.

   Documentation Copyrights:

   Copyright © 2004 FhG FOKUS
