* Try to find out parameter name, recognized parameters * are transport, lr, r2, maddr */
| 98 | * are transport, lr, r2, maddr |
| 99 | */ |
| 100 | static inline void parse_uri_class(param_hooks_t* _h, param_t* _p) |
| 101 | { |
| 102 | |
| 103 | if (!_p->name.s) { |
| 104 | LM_ERR("empty value\n"); |
| 105 | return; |
| 106 | } |
| 107 | switch(_p->name.s[0]) { |
| 108 | case 't': |
| 109 | case 'T': |
| 110 | if ((_p->name.len == 9) && |
| 111 | (!strncasecmp(_p->name.s + 1, "ransport", 8))) { |
| 112 | _p->type = P_TRANSPORT; |
| 113 | _h->uri.transport = _p; |
| 114 | } else if (_p->name.len == 2) { |
| 115 | if (((_p->name.s[1] == 't') || (_p->name.s[1] == 'T')) && |
| 116 | ((_p->name.s[2] == 'l') || (_p->name.s[2] == 'L'))) { |
| 117 | _p->type = P_TTL; |
| 118 | _h->uri.ttl = _p; |
| 119 | } |
| 120 | } |
| 121 | break; |
| 122 | |
| 123 | case 'l': |
| 124 | case 'L': |
| 125 | if ((_p->name.len == 2) && ((_p->name.s[1] == 'r') || (_p->name.s[1] == 'R'))) { |
| 126 | _p->type = P_LR; |
| 127 | _h->uri.lr = _p; |
| 128 | } |
| 129 | break; |
| 130 | |
| 131 | case 'r': |
| 132 | case 'R': |
| 133 | if ((_p->name.len == 2) && (_p->name.s[1] == '2')) { |
| 134 | _p->type = P_R2; |
| 135 | _h->uri.r2 = _p; |
| 136 | } |
| 137 | break; |
| 138 | |
| 139 | case 'm': |
| 140 | case 'M': |
| 141 | if ((_p->name.len == 5) && |
| 142 | (!strncasecmp(_p->name.s + 1, "addr", 4))) { |
| 143 | _p->type = P_MADDR; |
| 144 | _h->uri.maddr = _p; |
| 145 | } |
| 146 | break; |
| 147 | |
| 148 | case 'd': |
| 149 | case 'D': |
| 150 | if ((_p->name.len == 5) && |
| 151 | (!strncasecmp(_p->name.s + 1, "stip", 4))) { |
| 152 | _p->type = P_DSTIP; |
| 153 | _h->uri.dstip = _p; |
| 154 | } else if ((_p->name.len == 7) && |
| 155 | (!strncasecmp(_p->name.s + 1, "stport", 6))) { |
| 156 | _p->type = P_DSTPORT; |
| 157 | _h->uri.dstport = _p; |