static int mod_init(void) { load_tm_f load_tm; /* import the TM auto-loading function */ if ( !(load_tm = (load_tm_f)find_export("load_tm", NO_SCRIPT, 0))) { LOG(L_ERR, "ERROR:acc:mod_init: can't import load_tm\n"); return -1; } /* let the auto-loading function load all TM stuff */ if (load_tm( &tmb )==-1) return -1; if (verify_fmt(log_fmt)==-1) return -1; /* register callbacks*/ /* listen for all incoming requests */ if (tmb.register_tmcb( 0, 0, TMCB_REQUEST_IN, on_req, 0, 0) <= 0) { LOG(L_ERR,"ERROR:acc:mod_init: cannot register TMCB_REQUEST_IN " "callback\n"); return -1; } init_data(log_fmt); if (parse_attrs(&avps, &avps_n, attrs) < 0) { ERR("Error while parsing 'attrs' module parameter\n"); return -1; } return 0; }
static int mod_init(void) { load_tm_f load_tm; /* import the TM auto-loading function */ if ( !(load_tm = (load_tm_f)find_export("load_tm", NO_SCRIPT, 0))) { LOG(L_ERR, "ERROR:acc:mod_init: can't import load_tm\n"); return -1; } /* let the auto-loading function load all TM stuff */ if (load_tm( &tmb )==-1) return -1; if (verify_fmt(log_fmt)==-1) return -1; /* register callbacks*/ /* listen for all incoming requests */ if (tmb.register_tmcb( 0, 0, TMCB_REQUEST_IN, on_req, 0 ) <= 0) { LOG(L_ERR,"ERROR:acc:mod_init: cannot register TMCB_REQUEST_IN " "callback\n"); return -1; } if (bind_dbmod(db_url.s, &acc_dbf) < 0) { LOG(L_ERR, "ERROR:acc:mod_init: bind_db failed\n"); return -1; } /* Check database capabilities */ if (!DB_CAPABILITY(acc_dbf, DB_CAP_INSERT)) { LOG(L_ERR, "ERROR:acc:mod_init: Database module does not implement insert function\n"); return -1; } init_data(log_fmt); if (parse_attrs(&avps, &avps_n, attrs) < 0) { ERR("Error while parsing 'attrs' module parameter\n"); return -1; } return 0; }
static int mod_init(void) { DICT_VENDOR *vend; load_tm_f load_tm; /* import the TM auto-loading function */ if ( !(load_tm=(load_tm_f)find_export("load_tm", NO_SCRIPT, 0))) { LOG(L_ERR, "ERROR:acc:mod_init: can't import load_tm\n"); return -1; } /* let the auto-loading function load all TM stuff */ if (load_tm( &tmb )==-1) return -1; if (verify_fmt(log_fmt)==-1) return -1; /* register callbacks*/ /* listen for all incoming requests */ if (tmb.register_tmcb( 0, 0, TMCB_REQUEST_IN, on_req, 0, 0) <= 0) { LOG(L_ERR,"ERROR:acc:mod_init: cannot register TMCB_REQUEST_IN " "callback\n"); return -1; } memset(attrs, 0, sizeof(attrs)); memset(vals, 0, sizeof(vals)); attrs[A_USER_NAME].n = "User-Name"; attrs[A_SERVICE_TYPE].n = "Service-Type"; attrs[A_CALLED_STATION_ID].n = "Called-Station-Id"; attrs[A_CALLING_STATION_ID].n = "Calling-Station-Id"; attrs[A_ACCT_STATUS_TYPE].n = "Acct-Status-Type"; attrs[A_ACCT_SESSION_ID].n = "Acct-Session-Id"; attrs[A_SIP_METHOD].n = "Sip-Method"; attrs[A_SIP_RESPONSE_CODE].n = "Sip-Response-Code"; attrs[A_SIP_CSEQ].n = "Sip-CSeq"; attrs[A_SIP_TO_TAG].n = "Sip-To-Tag"; attrs[A_SIP_FROM_TAG].n = "Sip-From-Tag"; attrs[A_SIP_TRANSLATED_REQUEST_ID].n = "Sip-Translated-Request-Id"; attrs[A_SIP_SOURCE_IP_ADDRESS].n = "Sip-Source-IP-Address"; attrs[A_SIP_SOURCE_PORT].n = "Sip-Source-Port"; attrs[A_SER_ATTR].n = "SER-Attr"; attrs[A_SER_FROM].n = "SER-From"; attrs[A_SER_FLAGS].n = "SER-Flags"; attrs[A_SER_ORIGINAL_REQUEST_ID].n = "SER-Original-Request-Id"; attrs[A_SER_TO].n = "SER-To"; attrs[A_SER_DIGEST_USERNAME].n = "SER-Digest-Username"; attrs[A_SER_DIGEST_REALM].n = "SER-Digest-Realm"; attrs[A_SER_REQUEST_TIMESTAMP].n = "SER-Request-Timestamp"; attrs[A_SER_TO_DID].n = "SER-To-DID"; attrs[A_SER_FROM_UID].n = "SER-From-UID"; attrs[A_SER_FROM_DID].n = "SER-From-DID"; attrs[A_SER_TO_UID].n = "SER-To-UID"; attrs[A_SER_RESPONSE_TIMESTAMP].n = "SER-Response-Timestamp"; attrs[A_SER_SERVER_ID].n = "SER-Server-ID"; vals[V_START].n = "Start"; vals[V_STOP].n = "Stop"; vals[V_INTERIM_UPDATE].n = "Interim-Update"; vals[V_FAILED].n = "Failed"; vals[V_SIP_SESSION].n = "Sip-Session"; /* open log */ rc_openlog("ser"); /* read config */ if ((rh = rc_read_config(radius_config)) == NULL) { LOG(L_ERR, "ERROR:acc:mod_init: Error opening radius config file: %s\n", radius_config); return -1; } /* read dictionary */ if (rc_read_dictionary(rh, rc_conf_str(rh, "dictionary")) != 0) { LOG(L_ERR, "ERROR:acc:mod_init: Error reading radius dictionary\n"); return -1; } vend = rc_dict_findvend(rh, "iptelorg"); if (vend == NULL) { ERR("RADIUS dictionary is missing required vendor 'iptelorg'\n"); return -1; } INIT_AV(rh, attrs, vals, "acc", -1, -1); if (service_type != -1) { vals[V_SIP_SESSION].v = service_type; } if (parse_attrs(&avps, &avps_n, attrs_param) < 0) { ERR("Error while parsing 'attrs' module parameter\n"); return -1; } return 0; }
static int mod_init( void ) { load_tm_f load_tm; fprintf( stderr, "acc - initializing\n"); /* import the TM auto-loading function */ if ( !(load_tm=(load_tm_f)find_export("load_tm", NO_SCRIPT, 0))) { LOG(L_ERR, "ERROR: acc: mod_init: can't import load_tm\n"); return -1; } /* let the auto-loading function load all TM stuff */ if (load_tm( &tmb )==-1) return -1; if (verify_fmt(log_fmt)==-1) return -1; /* register callbacks */ /* report on completed transactions */ if (tmb.register_tmcb( TMCB_RESPONSE_OUT, acc_onreply, 0 /* empty param */ ) <= 0) return -1; /* account e2e acks if configured to do so */ if (tmb.register_tmcb( TMCB_E2EACK_IN, acc_onack, 0 /* empty param */ ) <=0 ) return -1; /* disable silent c-timer for registered calls */ if (tmb.register_tmcb( TMCB_REQUEST_IN, acc_onreq, 0 /* empty param */ ) <=0 ) return -1; /* report on missed calls */ if (tmb.register_tmcb( TMCB_ON_FAILURE, on_missed, 0 /* empty param */ ) <=0 ) return -1; /* get incoming replies ready for processing */ if (tmb.register_tmcb( TMCB_RESPONSE_IN, acc_onreply_in, 0 /* empty param */)<=0) return -1; #ifdef SQL_ACC if (bind_dbmod()) { LOG(L_ERR, "ERROR: acc: init_child bind_db failed..." "did you load a database module?\n"); return -1; } #endif #ifdef RAD_ACC /* open log */ rc_openlog("ser"); /* read config */ if (rc_read_config(radius_config)!=0) { LOG(L_ERR, "ERROR: acc: error opening radius config file: %s\n", radius_config ); return -1; } /* read dictionary */ if (rc_read_dictionary(rc_conf_str("dictionary"))!=0) { LOG(L_ERR, "ERROR: acc: error reading radius dictionary\n"); return -1; } #endif return 0; }