1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
|
maxfwd Module
Bogdan-Andrei Iancu
voice-system.ro
Edited by
Bogdan-Andrei Iancu
Copyright 2003 FhG FOKUS
_________________________________________________________
Table of Contents
1. User's Guide
1.1. Overview
1.2. Dependencies
1.2.1. OpenSER Modules
1.2.2. External Libraries or Applications
1.3. Exported Parameters
1.3.1. max_limit (integer)
1.4. Exported Functions
1.4.1. mf_process_maxfwd_header(max_value)
1.4.2. is_maxfwd_lt(max_value)
2. Developer's Guide
3. Frequently Asked Questions
List of Examples
1-1. Set max_limit parameter
1-2. mx_process_maxfwd_header usage
1-3. is_maxfwd_lt usage
_________________________________________________________
Chapter 1. User's Guide
1.1. Overview
The module implements all the operations regarding MaX-Forward
header field, like adding it (if not present) or decrementing
and checking the value of the existent one.
_________________________________________________________
1.2. Dependencies
1.2.1. OpenSER Modules
The following modules must be loaded before this module:
* No dependencies on other OpenSER modules.
_________________________________________________________
1.2.2. External Libraries or Applications
The following libraries or applications must be installed
before running OpenSER with this module loaded:
* None.
_________________________________________________________
1.3. Exported Parameters
1.3.1. max_limit (integer)
Set an upper limit for the max-forward value in the outgoing
requests. If the header is present, the decremented value is
not allowed to exceed this max_limits - if it does, the header
value will by decreased to "max_limit".
The range of values stretches from 1 to 256, which is the
maximum MAX-FORWARDS value allowed by RFC 3261.
Default value is "256".
Example 1-1. Set max_limit parameter
...
modparam("maxfwd", "max_limit", 32)
...
_________________________________________________________
1.4. Exported Functions
1.4.1. mf_process_maxfwd_header(max_value)
If no Max-Forward header is present in the received request, a
header will be added having the original value equal with
"max_value". If a Max-Forward header is already present, its
value will be decremented (if not 0).
Retuning codes:
* 2 (true) - header was not found and a new header was
succesfully added.
* 1 (true) - header was found and its value was successfully
decremented (had a non-0 value).
* -1 (false) - the header was found and its value is 0
(cannot be decremented).
* -2 (false) - error during processing.
The return code may be extensivly tested via script variable
"retcode" (or "$?").
Meaning of the parameters is as follows:
* max_value - Value to be added if there is no Max-Forwards
header field in the message.
This function can be used from REQUEST_ROUTE.
Example 1-2. mx_process_maxfwd_header usage
...
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10") && retcode==-1) {
sl_send_reply("483","Too Many Hops");
exit;
};
...
_________________________________________________________
1.4.2. is_maxfwd_lt(max_value)
Checks if the Max-Forward header value is less then the
"max_value" parameter value. It considers also the value of
the new inserted header (if locally added).
Retuning codes:
* 1 (true) - header was found or set and its value is
stricly less than "max_value".
* -1 (false) - the header was found or set and its value is
greater or equal to "max_value".
* -2 (false) - header was not found or not set.
* -3 (false) - error during processing.
The return code may be extensivly tested via script variable
"retcode" (or "$?").
Meaning of the parameters is as follows:
* max_value - value to check the Max-Forward.value against
(as less than).
Example 1-3. is_maxfwd_lt usage
...
# next hope is a gateway, so make no sens to
# forward if MF is 0 (after decrement)
if ( is_maxfwd_lt("1") ) {
sl_send_reply("483","Too Many Hops");
exit;
};
...
_________________________________________________________
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.
|