mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-05 14:53:16 +00:00
Import patch addr-del
(Logical change 1.178)
This commit is contained in:
parent
2cea8f2fb2
commit
f082b64fb4
@ -1,3 +1,8 @@
|
|||||||
|
2005-03-19 Thomas Graf <tgraf@suug.ch>
|
||||||
|
|
||||||
|
* Warn about wildcard deletions and provide IFA_ADDRESS upon
|
||||||
|
deletions to enforce prefix length validation for IPv4.
|
||||||
|
|
||||||
2005-03-30 Masahide NAKAMURA <nakam@linux-ipv6.org>
|
2005-03-30 Masahide NAKAMURA <nakam@linux-ipv6.org>
|
||||||
|
|
||||||
* ipv6 xfrm allocspi and monitor support.
|
* ipv6 xfrm allocspi and monitor support.
|
||||||
|
@ -43,9 +43,12 @@ typedef struct
|
|||||||
__u8 family;
|
__u8 family;
|
||||||
__u8 bytelen;
|
__u8 bytelen;
|
||||||
__s16 bitlen;
|
__s16 bitlen;
|
||||||
|
__u32 flags;
|
||||||
__u32 data[4];
|
__u32 data[4];
|
||||||
} inet_prefix;
|
} inet_prefix;
|
||||||
|
|
||||||
|
#define PREFIXLEN_SPECIFIED 1
|
||||||
|
|
||||||
#define DN_MAXADDL 20
|
#define DN_MAXADDL 20
|
||||||
#ifndef AF_DECnet
|
#ifndef AF_DECnet
|
||||||
#define AF_DECnet 12
|
#define AF_DECnet 12
|
||||||
|
@ -744,6 +744,7 @@ int ipaddr_modify(int cmd, int argc, char **argv)
|
|||||||
} req;
|
} req;
|
||||||
char *d = NULL;
|
char *d = NULL;
|
||||||
char *l = NULL;
|
char *l = NULL;
|
||||||
|
char *lcl_arg = NULL;
|
||||||
inet_prefix lcl;
|
inet_prefix lcl;
|
||||||
inet_prefix peer;
|
inet_prefix peer;
|
||||||
int local_len = 0;
|
int local_len = 0;
|
||||||
@ -821,6 +822,7 @@ int ipaddr_modify(int cmd, int argc, char **argv)
|
|||||||
usage();
|
usage();
|
||||||
if (local_len)
|
if (local_len)
|
||||||
duparg2("local", *argv);
|
duparg2("local", *argv);
|
||||||
|
lcl_arg = *argv;
|
||||||
get_prefix(&lcl, *argv, req.ifa.ifa_family);
|
get_prefix(&lcl, *argv, req.ifa.ifa_family);
|
||||||
if (req.ifa.ifa_family == AF_UNSPEC)
|
if (req.ifa.ifa_family == AF_UNSPEC)
|
||||||
req.ifa.ifa_family = lcl.family;
|
req.ifa.ifa_family = lcl.family;
|
||||||
@ -838,9 +840,17 @@ int ipaddr_modify(int cmd, int argc, char **argv)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer_len == 0 && local_len && cmd != RTM_DELADDR) {
|
if (peer_len == 0 && local_len) {
|
||||||
peer = lcl;
|
if (cmd == RTM_DELADDR && lcl.family == AF_INET && !(lcl.flags & PREFIXLEN_SPECIFIED)) {
|
||||||
addattr_l(&req.n, sizeof(req), IFA_ADDRESS, &lcl.data, lcl.bytelen);
|
fprintf(stderr,
|
||||||
|
"Warning: Executing wildcard deletion to stay compatible with old scripts.\n" \
|
||||||
|
" Explicitly specify the prefix length (%s/%d) to avoid this warning.\n" \
|
||||||
|
" This special behaviour is likely to disappear in further releases,\n" \
|
||||||
|
" fix your scripts!\n", lcl_arg, local_len*8);
|
||||||
|
} else {
|
||||||
|
peer = lcl;
|
||||||
|
addattr_l(&req.n, sizeof(req), IFA_ADDRESS, &lcl.data, lcl.bytelen);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (req.ifa.ifa_prefixlen == 0)
|
if (req.ifa.ifa_prefixlen == 0)
|
||||||
req.ifa.ifa_prefixlen = lcl.bitlen;
|
req.ifa.ifa_prefixlen = lcl.bitlen;
|
||||||
|
@ -241,6 +241,7 @@ int get_prefix_1(inet_prefix *dst, char *arg, int family)
|
|||||||
err = -1;
|
err = -1;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
dst->flags |= PREFIXLEN_SPECIFIED;
|
||||||
dst->bitlen = plen;
|
dst->bitlen = plen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user