Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
d0b0268f
Commit
d0b0268f
authored
Feb 10, 2010
by
Patrick McHardy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
netfilter: ctnetlink: add missing netlink attribute policies
Signed-off-by:
Patrick McHardy
<
kaber@trash.net
>
parent
42107f50
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
5 deletions
+36
-5
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_netlink.c
+36
-5
No files found.
net/netfilter/nf_conntrack_netlink.c
View file @
d0b0268f
...
@@ -708,6 +708,11 @@ ctnetlink_parse_tuple_proto(struct nlattr *attr,
...
@@ -708,6 +708,11 @@ ctnetlink_parse_tuple_proto(struct nlattr *attr,
return
ret
;
return
ret
;
}
}
static
const
struct
nla_policy
tuple_nla_policy
[
CTA_TUPLE_MAX
+
1
]
=
{
[
CTA_TUPLE_IP
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_TUPLE_PROTO
]
=
{
.
type
=
NLA_NESTED
},
};
static
int
static
int
ctnetlink_parse_tuple
(
const
struct
nlattr
*
const
cda
[],
ctnetlink_parse_tuple
(
const
struct
nlattr
*
const
cda
[],
struct
nf_conntrack_tuple
*
tuple
,
struct
nf_conntrack_tuple
*
tuple
,
...
@@ -718,7 +723,7 @@ ctnetlink_parse_tuple(const struct nlattr * const cda[],
...
@@ -718,7 +723,7 @@ ctnetlink_parse_tuple(const struct nlattr * const cda[],
memset
(
tuple
,
0
,
sizeof
(
*
tuple
));
memset
(
tuple
,
0
,
sizeof
(
*
tuple
));
nla_parse_nested
(
tb
,
CTA_TUPLE_MAX
,
cda
[
type
],
NULL
);
nla_parse_nested
(
tb
,
CTA_TUPLE_MAX
,
cda
[
type
],
tuple_nla_policy
);
if
(
!
tb
[
CTA_TUPLE_IP
])
if
(
!
tb
[
CTA_TUPLE_IP
])
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -745,12 +750,16 @@ ctnetlink_parse_tuple(const struct nlattr * const cda[],
...
@@ -745,12 +750,16 @@ ctnetlink_parse_tuple(const struct nlattr * const cda[],
return
0
;
return
0
;
}
}
static
const
struct
nla_policy
help_nla_policy
[
CTA_HELP_MAX
+
1
]
=
{
[
CTA_HELP_NAME
]
=
{
.
type
=
NLA_NUL_STRING
},
};
static
inline
int
static
inline
int
ctnetlink_parse_help
(
const
struct
nlattr
*
attr
,
char
**
helper_name
)
ctnetlink_parse_help
(
const
struct
nlattr
*
attr
,
char
**
helper_name
)
{
{
struct
nlattr
*
tb
[
CTA_HELP_MAX
+
1
];
struct
nlattr
*
tb
[
CTA_HELP_MAX
+
1
];
nla_parse_nested
(
tb
,
CTA_HELP_MAX
,
attr
,
NULL
);
nla_parse_nested
(
tb
,
CTA_HELP_MAX
,
attr
,
help_nla_policy
);
if
(
!
tb
[
CTA_HELP_NAME
])
if
(
!
tb
[
CTA_HELP_NAME
])
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -761,11 +770,17 @@ ctnetlink_parse_help(const struct nlattr *attr, char **helper_name)
...
@@ -761,11 +770,17 @@ ctnetlink_parse_help(const struct nlattr *attr, char **helper_name)
}
}
static
const
struct
nla_policy
ct_nla_policy
[
CTA_MAX
+
1
]
=
{
static
const
struct
nla_policy
ct_nla_policy
[
CTA_MAX
+
1
]
=
{
[
CTA_TUPLE_ORIG
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_TUPLE_REPLY
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_STATUS
]
=
{
.
type
=
NLA_U32
},
[
CTA_STATUS
]
=
{
.
type
=
NLA_U32
},
[
CTA_PROTOINFO
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_HELP
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_NAT_SRC
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_TIMEOUT
]
=
{
.
type
=
NLA_U32
},
[
CTA_TIMEOUT
]
=
{
.
type
=
NLA_U32
},
[
CTA_MARK
]
=
{
.
type
=
NLA_U32
},
[
CTA_MARK
]
=
{
.
type
=
NLA_U32
},
[
CTA_USE
]
=
{
.
type
=
NLA_U32
},
[
CTA_ID
]
=
{
.
type
=
NLA_U32
},
[
CTA_ID
]
=
{
.
type
=
NLA_U32
},
[
CTA_NAT_DST
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_TUPLE_MASTER
]
=
{
.
type
=
NLA_NESTED
},
};
};
static
int
static
int
...
@@ -1053,6 +1068,12 @@ ctnetlink_change_timeout(struct nf_conn *ct, const struct nlattr * const cda[])
...
@@ -1053,6 +1068,12 @@ ctnetlink_change_timeout(struct nf_conn *ct, const struct nlattr * const cda[])
return
0
;
return
0
;
}
}
static
const
struct
nla_policy
protoinfo_policy
[
CTA_PROTOINFO_MAX
+
1
]
=
{
[
CTA_PROTOINFO_TCP
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_PROTOINFO_DCCP
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_PROTOINFO_SCTP
]
=
{
.
type
=
NLA_NESTED
},
};
static
inline
int
static
inline
int
ctnetlink_change_protoinfo
(
struct
nf_conn
*
ct
,
const
struct
nlattr
*
const
cda
[])
ctnetlink_change_protoinfo
(
struct
nf_conn
*
ct
,
const
struct
nlattr
*
const
cda
[])
{
{
...
@@ -1061,7 +1082,7 @@ ctnetlink_change_protoinfo(struct nf_conn *ct, const struct nlattr * const cda[]
...
@@ -1061,7 +1082,7 @@ ctnetlink_change_protoinfo(struct nf_conn *ct, const struct nlattr * const cda[]
struct
nf_conntrack_l4proto
*
l4proto
;
struct
nf_conntrack_l4proto
*
l4proto
;
int
err
=
0
;
int
err
=
0
;
nla_parse_nested
(
tb
,
CTA_PROTOINFO_MAX
,
attr
,
NULL
);
nla_parse_nested
(
tb
,
CTA_PROTOINFO_MAX
,
attr
,
protoinfo_policy
);
rcu_read_lock
();
rcu_read_lock
();
l4proto
=
__nf_ct_l4proto_find
(
nf_ct_l3num
(
ct
),
nf_ct_protonum
(
ct
));
l4proto
=
__nf_ct_l4proto_find
(
nf_ct_l3num
(
ct
),
nf_ct_protonum
(
ct
));
...
@@ -1073,12 +1094,18 @@ ctnetlink_change_protoinfo(struct nf_conn *ct, const struct nlattr * const cda[]
...
@@ -1073,12 +1094,18 @@ ctnetlink_change_protoinfo(struct nf_conn *ct, const struct nlattr * const cda[]
}
}
#ifdef CONFIG_NF_NAT_NEEDED
#ifdef CONFIG_NF_NAT_NEEDED
static
const
struct
nla_policy
nat_seq_policy
[
CTA_NAT_SEQ_MAX
+
1
]
=
{
[
CTA_NAT_SEQ_CORRECTION_POS
]
=
{
.
type
=
NLA_U32
},
[
CTA_NAT_SEQ_OFFSET_BEFORE
]
=
{
.
type
=
NLA_U32
},
[
CTA_NAT_SEQ_OFFSET_AFTER
]
=
{
.
type
=
NLA_U32
},
};
static
inline
int
static
inline
int
change_nat_seq_adj
(
struct
nf_nat_seq
*
natseq
,
const
struct
nlattr
*
const
attr
)
change_nat_seq_adj
(
struct
nf_nat_seq
*
natseq
,
const
struct
nlattr
*
const
attr
)
{
{
struct
nlattr
*
cda
[
CTA_NAT_SEQ_MAX
+
1
];
struct
nlattr
*
cda
[
CTA_NAT_SEQ_MAX
+
1
];
nla_parse_nested
(
cda
,
CTA_NAT_SEQ_MAX
,
attr
,
NULL
);
nla_parse_nested
(
cda
,
CTA_NAT_SEQ_MAX
,
attr
,
nat_seq_policy
);
if
(
!
cda
[
CTA_NAT_SEQ_CORRECTION_POS
])
if
(
!
cda
[
CTA_NAT_SEQ_CORRECTION_POS
])
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -1648,8 +1675,12 @@ ctnetlink_exp_dump_table(struct sk_buff *skb, struct netlink_callback *cb)
...
@@ -1648,8 +1675,12 @@ ctnetlink_exp_dump_table(struct sk_buff *skb, struct netlink_callback *cb)
}
}
static
const
struct
nla_policy
exp_nla_policy
[
CTA_EXPECT_MAX
+
1
]
=
{
static
const
struct
nla_policy
exp_nla_policy
[
CTA_EXPECT_MAX
+
1
]
=
{
[
CTA_EXPECT_MASTER
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_EXPECT_TUPLE
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_EXPECT_MASK
]
=
{
.
type
=
NLA_NESTED
},
[
CTA_EXPECT_TIMEOUT
]
=
{
.
type
=
NLA_U32
},
[
CTA_EXPECT_TIMEOUT
]
=
{
.
type
=
NLA_U32
},
[
CTA_EXPECT_ID
]
=
{
.
type
=
NLA_U32
},
[
CTA_EXPECT_ID
]
=
{
.
type
=
NLA_U32
},
[
CTA_EXPECT_HELP_NAME
]
=
{
.
type
=
NLA_NUL_STRING
},
};
};
static
int
static
int
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment