]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Setting feeder interface is working fine
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 5 May 2025 15:20:50 +0000 (11:20 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 5 May 2025 15:20:50 +0000 (11:20 -0400)
Makefile
app/feeder.c
lib/devsoc.c
lib/unipar.c
lib/unipar.h

index d1b2d2c46338d585d9d0d9132724cb5045b40ac9..51b56e7e6b60d4f2bc33a614c39420502ff96bba 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -57,6 +57,7 @@ onefeed       :       debug
                @ bin/feeder                            \
                        -f                              \
                        -d2                             \
+                       -i 127.63.31.15                 \
                        -c ./conf/feeder.conf.dvl       \
                        $(TESTIP)                       \
                        $(TESTPORT)                     \
index d6f75cb202f8d8463e4d4acec3e11c0e86a48c4f..f5a09ffae3540fd1ce9c4ce72cf0ba81b3151639 100644 (file)
@@ -460,7 +460,7 @@ while (next<argc) {
       break;
     case  1     :       //opening a socket
       //socptr=soc_openonesock(pro_smtp,"127.63.31.15",argv[0],argv[1]);
-      socptr=soc_openonesock(pro_smtp,(const char *)0,argv[0],argv[1]);
+      socptr=soc_openonesock(pro_smtp,srcip,argv[0],argv[1]);
       if (socptr==(SOCPTR *)0) {
         (void) rou_alert(0,"Unable to contact remote!");
         phase=999;
@@ -513,7 +513,7 @@ while (proceed==true) {
   //(void) fprintf(stdout,"JMPDBG main phase='%d'\n",phase);
   switch (phase) {
     case 0      :       //checking parameters
-      if ((params=par_getparams(argc,argv,"c:d:fhr:v"))==(ARGTYP *)0) {
+      if ((params=par_getparams(argc,argv,"c:d:fhi:r:v"))==(ARGTYP *)0) {
         proceed=false;      //no need to go further
         }
       break;
index 6cb7adaaa35e7016a997b9a54e82a32cc46e3243..cc742fe1630a012ff3bc4dfd36e1a20bbf0966df 100644 (file)
@@ -569,7 +569,7 @@ return socptr;
 /*      server. Return a socptr if successful.          */
 /*                                                     */
 /********************************************************/
-PUBLIC SOCPTR *soc_openonesock(PROTYP proto,const char *src,const char *ip,const char *port)
+PUBLIC SOCPTR *soc_openonesock(PROTYP proto,const char *srcip,const char *ip,const char *port)
 
 {
 #define OPEP    "devsoc.c:soc_openonesoc"
@@ -624,15 +624,15 @@ while (proceed==true) {
         }
       break;
     case 3      :       //Need to bind from a specific source address
-      if (src!=(const char *)0) {
+      if ((srcip!=(const char *)0)&&(strlen(srcip)>0)) {
         struct sockaddr_in server_addr;
 
         (void) memset(&server_addr,'\000',sizeof(server_addr));
         server_addr.sin_family=AF_INET;
-        inet_pton(AF_INET,src, &(server_addr.sin_addr));
+        inet_pton(AF_INET,srcip, &(server_addr.sin_addr));
         if (bind(handle,(struct sockaddr*)&server_addr,sizeof(server_addr))<0) {
           (void) rou_alert(0,"%s Unable to bind on <%s> error=<%s>",
-                              OPEP,src,strerror(errno));
+                              OPEP,srcip,strerror(errno));
           (void) close(handle);
           phase=999;
           }
index 9d81e73b68d990b2f5f9174b25a59f6d37b7adcc..1a609fbe51f42f7fa18053e5319176bcf6216274 100644 (file)
@@ -16,6 +16,7 @@
 
 //application default config file
 PUBLIC  char  config[200]="/etc/"APPNAME"/"APPNAME".conf";
+PUBLIC  char  srcip[200]="";
 
 /*
 ^L
@@ -50,6 +51,7 @@ static char *options[]={
               "d[-d debug]",
               "f[-f]",
               "h[-h]",
+              "i[-i IP]",
               "r[-r root]",
               "v[-v]",
                (char *)0
@@ -60,6 +62,7 @@ static char *details[]={
               "-d level\t: debug level [1-10]\n",
               "-f\t\t: start program in foreground (CLI) mode\n",
               "-h\t\t: print this help message\n",
+              "-i IP\t\t: IP to be used as source IP\n",
               "-r root\t\t: root working directory\n",
               "-v\t\t: Print program version number\n",
               (char *)0
@@ -160,7 +163,11 @@ while (((c=getopt(argc,argv,optstring))!=EOF)&&(params!=(ARGTYP *)0)) {
     case 'h'   :       //requestion program help
       (void) fprintf(stderr,"%s-%s\n",shortname,rou_getversion());
       (void) usage_aid(shortname,optstring);
-      params=par_freeparams(params);
+      params=par_freeparams(params);    //no going further
+      break;
+    case 'i'   :       //ser the Interface source IP to be used
+      (void) memset(srcip,'\000',sizeof(srcip));
+      (void) strncpy(srcip,optarg,sizeof(srcip)-1);
       break;
     case 'r'   :
       if (rootdir!=(char *)0)
index 124e51eaaa59b024339abd8b270242a985173769..d4db92b4561b1d533b80bf5823bcb87b0cea8559 100644 (file)
@@ -17,7 +17,8 @@ typedef struct        {
        char **argv;            //list of argument
        }ARGTYP;
 
-extern char           config[]; //Application config file
+extern  char          config[]; //Application config file
+extern  char           srcip[]; //Source IP to be used
 
 //free allocated memory used by a ARGTYP structure
 extern ARGTYP *par_freeparams(ARGTYP *params);