10 #include "internal/internal.h"
13 __snprintf_expect_timeout(
char *buf,
unsigned int len,
14 const struct nf_expect *exp)
16 if (test_bit(ATTR_EXP_TIMEOUT, exp->set))
17 return snprintf(buf, len,
"%u ", exp->timeout);
23 __snprintf_expect_class(
char *buf,
unsigned int len,
24 const struct nf_expect *exp)
26 if (test_bit(ATTR_EXP_CLASS, exp->set))
27 return snprintf(buf, len,
"class=%u ", exp->class);
32 static int __snprintf_expect_proto(
char *buf,
34 const struct nf_expect *exp)
36 return(snprintf(buf, len,
"proto=%d ",
37 exp->expected.orig.protonum));
40 int __snprintf_expect_default(
char *buf,
42 const struct nf_expect *exp,
43 unsigned int msg_type,
46 int ret = 0, size = 0, offset = 0;
47 const char *delim =
"";
51 ret = snprintf(buf, len,
"%9s ",
"[NEW]");
54 ret = snprintf(buf, len,
"%9s ",
"[UPDATE]");
57 ret = snprintf(buf, len,
"%9s ",
"[DESTROY]");
63 BUFFER_SIZE(ret, size, len, offset);
65 ret = __snprintf_expect_timeout(buf+offset, len, exp);
66 BUFFER_SIZE(ret, size, len, offset);
68 ret = __snprintf_expect_proto(buf+offset, len, exp);
69 BUFFER_SIZE(ret, size, len, offset);
71 ret = __snprintf_address(buf+offset, len, &exp->expected.orig,
73 BUFFER_SIZE(ret, size, len, offset);
75 ret = __snprintf_proto(buf+offset, len, &exp->expected.orig);
76 BUFFER_SIZE(ret, size, len, offset);
78 ret = __snprintf_address(buf+offset, len, &exp->mask.orig,
79 "mask-src",
"mask-dst");
80 BUFFER_SIZE(ret, size, len, offset);
82 ret = __snprintf_proto(buf+offset, len,
84 BUFFER_SIZE(ret, size, len, offset);
86 ret = __snprintf_address(buf+offset, len, &exp->master.orig,
87 "master-src",
"master-dst");
88 BUFFER_SIZE(ret, size, len, offset);
90 ret = __snprintf_proto(buf+offset, len,
92 BUFFER_SIZE(ret, size, len, offset);
94 if (test_bit(ATTR_EXP_ZONE, exp->set)) {
95 ret = snprintf(buf+offset, len,
"zone=%u ", exp->zone);
96 BUFFER_SIZE(ret, size, len, offset);
99 if (exp->flags & NF_CT_EXPECT_PERMANENT) {
100 ret = snprintf(buf+offset, len,
"PERMANENT");
101 BUFFER_SIZE(ret, size, len, offset);
104 if (exp->flags & NF_CT_EXPECT_INACTIVE) {
105 ret = snprintf(buf+offset, len,
"%sINACTIVE", delim);
106 BUFFER_SIZE(ret, size, len, offset);
109 if (exp->flags & NF_CT_EXPECT_USERSPACE) {
110 ret = snprintf(buf+offset, len,
"%sUSERSPACE", delim);
111 BUFFER_SIZE(ret, size, len, offset);
115 ret = snprintf(buf+offset, len,
" ");
116 BUFFER_SIZE(ret, size, len, offset);
118 ret = __snprintf_expect_class(buf+offset, len, exp);
119 BUFFER_SIZE(ret, size, len, offset);
121 if (test_bit(ATTR_EXP_HELPER_NAME, exp->set)) {
122 ret = snprintf(buf+offset, len,
"helper=%s", exp->helper_name);
123 BUFFER_SIZE(ret, size, len, offset);
127 if (len > 0 && buf[size-1] ==
' ')