From f33b668d401a93d91bd59dfa1419e24e5663cd79 Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Mon, 5 May 2025 11:20:50 -0400 Subject: [PATCH] Setting feeder interface is working fine --- Makefile | 1 + app/feeder.c | 4 ++-- lib/devsoc.c | 8 ++++---- lib/unipar.c | 9 ++++++++- lib/unipar.h | 3 ++- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index d1b2d2c..51b56e7 100644 --- 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) \ diff --git a/app/feeder.c b/app/feeder.c index d6f75cb..f5a09ff 100644 --- a/app/feeder.c +++ b/app/feeder.c @@ -460,7 +460,7 @@ while (next0)) { 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; } diff --git a/lib/unipar.c b/lib/unipar.c index 9d81e73..1a609fb 100644 --- a/lib/unipar.c +++ b/lib/unipar.c @@ -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) diff --git a/lib/unipar.h b/lib/unipar.h index 124e51e..d4db92b 100644 --- a/lib/unipar.h +++ b/lib/unipar.h @@ -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); -- 2.47.3