00001
00002
00003
00004
00005
00006
00007
00008 #include "internal/internal.h"
00009
00010 static int __snprintf_expect_proto(char *buf,
00011 unsigned int len,
00012 const struct nf_expect *exp)
00013 {
00014 return(snprintf(buf, len, "%u proto=%d ",
00015 exp->timeout,
00016 exp->expected.tuple[__DIR_ORIG].protonum));
00017 }
00018
00019 int __snprintf_expect_default(char *buf,
00020 unsigned int len,
00021 const struct nf_expect *exp,
00022 unsigned int msg_type,
00023 unsigned int flags)
00024 {
00025 int ret = 0, size = 0, offset = 0;
00026 const char *delim = "";
00027
00028 switch(msg_type) {
00029 case NFCT_T_NEW:
00030 ret = snprintf(buf, len, "%9s ", "[NEW]");
00031 break;
00032 case NFCT_T_UPDATE:
00033 ret = snprintf(buf, len, "%9s ", "[UPDATE]");
00034 break;
00035 case NFCT_T_DESTROY:
00036 ret = snprintf(buf, len, "%9s ", "[DESTROY]");
00037 break;
00038 default:
00039 break;
00040 }
00041
00042 BUFFER_SIZE(ret, size, len, offset);
00043
00044 ret = __snprintf_expect_proto(buf+offset, len, exp);
00045 BUFFER_SIZE(ret, size, len, offset);
00046
00047 ret = __snprintf_address(buf+offset, len, &exp->expected.tuple[__DIR_ORIG]);
00048 BUFFER_SIZE(ret, size, len, offset);
00049
00050 ret = __snprintf_proto(buf+offset, len, &exp->expected.tuple[__DIR_ORIG]);
00051 BUFFER_SIZE(ret, size, len, offset);
00052
00053 if (test_bit(ATTR_EXP_ZONE, exp->set)) {
00054 ret = snprintf(buf+offset, len, "zone=%u ", exp->zone);
00055 BUFFER_SIZE(ret, size, len, offset);
00056 }
00057
00058 if (exp->flags & NF_CT_EXPECT_PERMANENT) {
00059 ret = snprintf(buf+offset, len, "PERMANENT");
00060 BUFFER_SIZE(ret, size, len, offset);
00061 delim = ",";
00062 }
00063 if (exp->flags & NF_CT_EXPECT_INACTIVE) {
00064 ret = snprintf(buf+offset, len, "%sINACTIVE", delim);
00065 BUFFER_SIZE(ret, size, len, offset);
00066 delim = ",";
00067 }
00068 if (exp->flags & NF_CT_EXPECT_USERSPACE) {
00069 ret = snprintf(buf+offset, len, "%sUSERSPACE", delim);
00070 BUFFER_SIZE(ret, size, len, offset);
00071 }
00072
00073
00074 if (len > 0 && buf[size-1] == ' ')
00075 size--;
00076
00077 return size;
00078 }