@ bin/feeder \
-f \
-d2 \
+ -i 127.63.31.15 \
-c ./conf/feeder.conf.dvl \
$(TESTIP) \
$(TESTPORT) \
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;
//(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;
/* 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"
}
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;
}
//application default config file
PUBLIC char config[200]="/etc/"APPNAME"/"APPNAME".conf";
+PUBLIC char srcip[200]="";
/*
^L
"d[-d debug]",
"f[-f]",
"h[-h]",
+ "i[-i IP]",
"r[-r root]",
"v[-v]",
(char *)0
"-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
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)
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);