- if (peer_len) {
- duparg("peer", *argv);
- }
- get_prefix(&peer, *argv, req.ifa.ifa_family);
- peer_len = peer.bytelen;
- if (req.ifa.ifa_family == AF_UNSPEC) {
- req.ifa.ifa_family = peer.family;
- }
- addattr_l(&req.n, sizeof(req), IFA_ADDRESS, &peer.data, peer.bytelen);
- req.ifa.ifa_prefixlen = peer.bitlen;
- break;
- case 2: /* broadcast */
- case 3: /* brd */
- {
- inet_prefix addr;
- NEXT_ARG();
- if (brd_len) {
- duparg("broadcast", *argv);
- }
- if (LONE_CHAR(*argv, '+')) {
- brd_len = -1;
- }
- else if (LONE_DASH(*argv)) {
- brd_len = -2;
- } else {
- get_addr(&addr, *argv, req.ifa.ifa_family);
- if (req.ifa.ifa_family == AF_UNSPEC)
- req.ifa.ifa_family = addr.family;
- addattr_l(&req.n, sizeof(req), IFA_BROADCAST, &addr.data, addr.bytelen);
- brd_len = addr.bytelen;
- }
- break;