Bläddra i källkod

New module interface.

Jan Janak 23 år sedan
förälder
incheckning
ad79ca9403
3 ändrade filer med 52 tillägg och 3 borttagningar
  1. 7 3
      main.c
  2. 37 0
      modparam.c
  3. 8 0
      modparam.h

+ 7 - 3
main.c

@@ -666,8 +666,8 @@ int main(int argc, char** argv)
 		goto error;
 		goto error;
 	}
 	}
 
 
-	/*init builtin  modules*/
-	init_builtin_modules();
+	/*register builtin  modules*/
+	register_builtin_modules();
 
 
 	yyin=cfg_stream;
 	yyin=cfg_stream;
 	if ((yyparse()!=0)||(cfg_errors)){
 	if ((yyparse()!=0)||(cfg_errors)){
@@ -675,7 +675,11 @@ int main(int argc, char** argv)
 		goto error;
 		goto error;
 	}
 	}
 	
 	
-	
+	if (init_modules() != 0) {
+		fprintf(stderr, "ERROR: error while initializing modules\n");
+		goto error;
+	}
+
 	print_rl();
 	print_rl();
 	/* fix routing lists */
 	/* fix routing lists */
 	if ( (r=fix_rls())!=0){
 	if ( (r=fix_rls())!=0){

+ 37 - 0
modparam.c

@@ -0,0 +1,37 @@
+#include "modparam.h"
+#include "dprint.h"
+#include <string.h>
+
+
+int set_mod_param(char* _mod, char* _name, modparam_t _type, void* _val)
+{
+	void* ptr;
+	
+	if (!_mod) {
+		LOG(L_ERR, "set_mod_param(): Invalid _mod parameter value\n");
+		return -1;
+	}
+
+	if (!_name) {
+		LOG(L_ERR, "set_mod_param(): Invalid _name parameter value\n");
+		return -2;
+	}
+
+	ptr = find_param_export(_mod, _name, _type);
+	if (!ptr) {
+		LOG(L_ERR, "set_mod_param(): Parameter not found\n");
+		return -3;
+	}
+
+	switch(_type) {
+	case STR_PARAM:
+		*((char**)ptr) = strdup((char*)_val);
+		break;
+
+	case INT_PARAM:
+		*((int*)ptr) = (int)_val;
+		break;
+	}
+
+	return 0;
+}

+ 8 - 0
modparam.h

@@ -0,0 +1,8 @@
+#ifndef modparam_h
+#define modparam_h
+
+#include "sr_module.h"
+
+int set_mod_param(char* _mod, char* _name, modparam_t _type, void* _val);
+
+#endif