|
Lines 937-943
int ip_conntrack_expect_related(struct i
Link Here
|
| 937 |
struct ip_conntrack_expect *expect) |
937 |
struct ip_conntrack_expect *expect) |
| 938 |
{ |
938 |
{ |
| 939 |
struct ip_conntrack_expect *old, *new; |
939 |
struct ip_conntrack_expect *old, *new; |
| 940 |
int ret = 0; |
|
|
| 941 |
|
940 |
|
| 942 |
WRITE_LOCK(&ip_conntrack_lock); |
941 |
WRITE_LOCK(&ip_conntrack_lock); |
| 943 |
/* Because of the write lock, no reader can walk the lists, |
942 |
/* Because of the write lock, no reader can walk the lists, |
|
Lines 1019-1025
int ip_conntrack_expect_related(struct i
Link Here
|
| 1019 |
* related_to->expecting. |
1018 |
* related_to->expecting. |
| 1020 |
*/ |
1019 |
*/ |
| 1021 |
unexpect_related(old); |
1020 |
unexpect_related(old); |
| 1022 |
ret = -EPERM; |
|
|
| 1023 |
} else if (LIST_FIND(&ip_conntrack_expect_list, expect_clash, |
1021 |
} else if (LIST_FIND(&ip_conntrack_expect_list, expect_clash, |
| 1024 |
struct ip_conntrack_expect *, &expect->tuple, |
1022 |
struct ip_conntrack_expect *, &expect->tuple, |
| 1025 |
&expect->mask)) { |
1023 |
&expect->mask)) { |
|
Lines 1059-1065
int ip_conntrack_expect_related(struct i
Link Here
|
| 1059 |
|
1057 |
|
| 1060 |
WRITE_UNLOCK(&ip_conntrack_lock); |
1058 |
WRITE_UNLOCK(&ip_conntrack_lock); |
| 1061 |
|
1059 |
|
| 1062 |
return ret; |
1060 |
return 0; |
| 1063 |
} |
1061 |
} |
| 1064 |
|
1062 |
|
| 1065 |
/* Change tuple in an existing expectation */ |
1063 |
/* Change tuple in an existing expectation */ |