int fixup_get_param_count(void **cur_param, int cur_param_no) { action_u_t *a; a = fixup_get_param(cur_param, cur_param_no, 0); if (a) return a->u.number; else return -1; }
static int print_fixup_f(void **param, int param_no) { action_u_t *a; int n, i; n = fixup_get_param_count(param, param_no); for (i=1; i<=n; i++) { a = fixup_get_param(param, param_no, i); DBG("param #%d: '%s'\n", i, a->u.string); } return 1; }
/* (char *hostname, char *port_nr) ==> (struct proxy_l *, -) */ static int fixup_hostport2proxy(void** param, int param_no) { unsigned int port; char *host; int err; struct proxy_l *proxy; action_u_t *a; str s; DBG("TM module: fixup_hostport2proxy(%s, %d)\n", (char*)*param, param_no); if (param_no==1){ return 0; } else if (param_no==2) { a = fixup_get_param(param, param_no, 1); host= a->u.string; port=str2s(*param, strlen(*param), &err); if (err!=0) { LOG(L_ERR, "TM module:fixup_hostport2proxy: bad port number <%s>\n", (char*)(*param)); return E_UNSPEC; } s.s = host; s.len = strlen(host); proxy=mk_proxy(&s, port, 0); /* FIXME: udp or tcp? */ if (proxy==0) { LOG(L_ERR, "ERROR: fixup_hostport2proxy: bad host name in URI <%s>\n", host ); return E_BAD_ADDRESS; } /* success -- fix the first parameter to proxy now ! */ a->u.data=proxy; return 0; } else { LOG(L_ERR,"ERROR: fixup_hostport2proxy called with parameter #<>{1,2}\n"); return E_BUG; } }