*/
/********************************************************/
/* */
+/* Procedure to parse an email protocol */
+/* */
+/********************************************************/
+PUBLIC PROTYP soc_getprotocol(const char *strproto)
+
+{
+static struct {
+ PROTYP proto;
+ const char *voca;
+ }prolist[]={
+ {pro_smtp,""},
+ {pro_smtp,"smtp"},
+ {pro_smtps,"smtps"},
+ {pro_unknwn,(char *)0}
+ };
+PROTYP proto;
+
+
+proto=pro_unknwn;
+for (int i=0;prolist[i].voca!=(char *)0;i++) {
+ if (strcasecmp(strproto,prolist[i].voca)==0) {
+ proto=prolist[i].proto;
+ break;
+ }
+ }
+return proto;
+}
+/*
+\f
+*/
+/********************************************************/
+/* */
/* Procedure to free memory used by a bind */
/* definition. */
/* */
//reference to a socket definition
typedef void SOCPTR;
+//procedure to parse an email protocol
+extern PROTYP soc_getprotocol(const char *strproto);
+
//procedure to free all memory used by a TCP socket
//definition (once closed)
extern SOCPTR **soc_freebindinf(SOCPTR **socptr);
char *ipnum;
char *port;
char *ptr;
+ char config[80];
+ (void) strncpy(config,argv[i],sizeof(ptr));
+ ptr=config;
iteration=1;
proto=pro_smtp;
ipnum=DFLTIP;
port=SMTPORT;
- ptr=argv[i];
- (void) rou_alert(0,"JMPDBG argv[%d]=<%s>",i,ptr);
+ (void) rou_alert(0,"JMPDBG argv[%d]=<%s>",i,argv[i]);
for (int j=0;j<3;j++) {
char *sofar;
sofar++;
switch (j) {
case 0 :
+ if ((proto=soc_getprotocol(ptr))==pro_unknwn) {
+ (void) rou_alert(0,"%s, protocol unknown within config <%s>",
+ OPEP,argv[i]);
+ proto=pro_smtp;
+ }
break;
case 1 :
ipnum=ptr;