aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-03-22 04:50:59 -0400
committerYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-04-02 21:05:59 -0400
commit0009ae1f50fb10178b5f54216ce567f3cb1d7267 (patch)
tree4e4f2cce15b2978dd6ef0ee52f6c83615cf7f511 /net/ipv6
parent3fcfa12904e83cc291cf2b7b05ff2530068920a4 (diff)
[IPV6] SIT: Disallow 0.0.0.0 in PRL and Flush PRL if given for DEL.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/sit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index ee0cc2851691..84c1ed246afb 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -215,6 +215,9 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a, int chg)
215 struct ip_tunnel_prl_entry *p; 215 struct ip_tunnel_prl_entry *p;
216 int err = 0; 216 int err = 0;
217 217
218 if (a->addr == htonl(INADDR_ANY))
219 return -EINVAL;
220
218 write_lock(&ipip6_lock); 221 write_lock(&ipip6_lock);
219 222
220 for (p = t->prl; p; p = p->next) { 223 for (p = t->prl; p; p = p->next) {
@@ -254,7 +257,7 @@ ipip6_tunnel_del_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a)
254 257
255 write_lock(&ipip6_lock); 258 write_lock(&ipip6_lock);
256 259
257 if (a) { 260 if (a && a->addr != htonl(INADDR_ANY)) {
258 for (p = &t->prl; *p; p = &(*p)->next) { 261 for (p = &t->prl; *p; p = &(*p)->next) {
259 if ((*p)->entry.addr == a->addr) { 262 if ((*p)->entry.addr == a->addr) {
260 x = *p; 263 x = *p;