for (i = 0; i < nmod; i++) {
if (modlist[i]->ssm_connect) {
ret = modlist[i]->ssm_connect(c);
- if ((ret & 0x0F) != SSM_PASS) return ret;
+ if (!SSM_PASSED(ret)) return ret;
}
}
return SSM_ACCEPT;
for (i = 0; i < nmod; i++) {
if (modlist[i]->ssm_helo) {
ret = modlist[i]->ssm_helo(c,cmd,len,argoff);
- if ((ret & 0x0F) != SSM_PASS) return ret;
+ if (!SSM_PASSED(ret)) return ret;
}
}
return SSM_ACCEPT;
for (i = 0; i < nmod; i++) {
if (modlist[i]->ssm_mail) {
ret = modlist[i]->ssm_mail(c,cmd,len,argoff);
- if ((ret & 0x0F) != SSM_PASS) return ret;
+ if (!SSM_PASSED(ret)) return ret;
}
}
return SSM_ACCEPT;
for (i = 0; i < nmod; i++) {
if (modlist[i]->ssm_rcpt) {
ret = modlist[i]->ssm_rcpt(c,cmd,len,argoff);
- if ((ret & 0x0F) != SSM_PASS) return ret;
+ if (!SSM_PASSED(ret)) return ret;
}
}
return SSM_ACCEPT;
for (i = 0; i < nmod; i++) {
if (modlist[i]->ssm_enddata) {
ret = modlist[i]->ssm_data(c, cmd, len, argoff);
- if ((ret & 0x0F) != SSM_PASS) return ret;
+ if (!SSM_PASSED(ret)) return ret;
}
}
return SSM_ACCEPT;
for (i = 0; i < nmod; i++) {
if (modlist[i]->ssm_enddata) {
ret = modlist[i]->ssm_enddata(c);
- if ((ret & 0x0F) != SSM_PASS) return ret;
+ if (!SSM_PASSED(ret)) return ret;
}
}
return SSM_ACCEPT;
/* SSM_PASS: move on to next module */
/* SSM_ACCEPT: stop processing, accept command */
/* SSM_REJECT: stop processing, reject command */
-/* SSM_MSG | SSM_ACCEPT: stop processing, accept command, module responded */
-/* SSM_MSG | SSM_REJECT: stop processing, reject command, module responded */
+/* SSM_RESPONSE | SSM_ACCEPT: stop processing, accept command, module responded */
+/* SSM_RESPONSE | SSM_REJECT: stop processing, reject command, module responded */
#define SSM_PASS 0
#define SSM_ACCEPT 1
#define SSM_REJECT 2
-#define SSM_MSG (1 << 8)
+#define SSM_RESPONSE (1 << 8)
-#define SSM_ACCEPTED(x) ((x & 0x0F) == SSM_ACCEPT)
-#define SSM_RESPONDED(x) (x & 0x100)
+#define SSM_ACTION(x) ((x) & 0x0F)
+#define SSM_PASSED(x) (SSM_ACTION(x) == SSM_PASS)
+#define SSM_ACCEPTED(x) (SSM_ACTION(x) == SSM_ACCEPT)
+#define SSM_REJECTED(x) (SSM_ACTION(x) == SSM_REJECT)
+#define SSM_RESPONDED(x) ((x) & SSM_RESPONSE)
struct smtpsink_module {
unsigned ssm_module_index;