Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 518496
Collapse All | Expand All

(-)ipsec-tools-0.8.2/src/racoon/grabmyaddr.c (-2 / +3 lines)
Lines 432-439 Link Here
432
	sin6 = (struct sockaddr_in6 *) &addr;
432
	sin6 = (struct sockaddr_in6 *) &addr;
433
	memcpy(&sin6->sin6_addr, RTA_DATA(rta[IFA_LOCAL]),
433
	memcpy(&sin6->sin6_addr, RTA_DATA(rta[IFA_LOCAL]),
434
		sizeof(sin6->sin6_addr));
434
		sizeof(sin6->sin6_addr));
435
	if (!IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
435
	//Why is this restricting to link local only?
436
		return 0;
436
	//if (!IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
437
	//	return 0;
437
	sin6->sin6_scope_id = ifa->ifa_index;
438
	sin6->sin6_scope_id = ifa->ifa_index;
438
439
439
	netlink_add_del_address(h->nlmsg_type == RTM_NEWADDR,
440
	netlink_add_del_address(h->nlmsg_type == RTM_NEWADDR,
(-)ipsec-tools-0.8.2/src/racoon/sockmisc.c (-3 / +6 lines)
Lines 123-131 Link Here
123
		port2 = ((struct sockaddr_in6 *)addr2)->sin6_port;
123
		port2 = ((struct sockaddr_in6 *)addr2)->sin6_port;
124
		if (memcmp(sa1, sa2, sizeof(struct in6_addr)) != 0)
124
		if (memcmp(sa1, sa2, sizeof(struct in6_addr)) != 0)
125
			return CMPSADDR_MISMATCH;
125
			return CMPSADDR_MISMATCH;
126
		if (((struct sockaddr_in6 *)addr1)->sin6_scope_id !=
126
		//Addresses match at this point, so check one for link local scope
127
		    ((struct sockaddr_in6 *)addr2)->sin6_scope_id)
127
		if (IN6_IS_ADDR_LINKLOCAL(&(((struct sockaddr_in6 *)addr1)->sin6_addr)))
128
			return CMPSADDR_MISMATCH;
128
			//Verify matching scope_id on link local addrs
129
			if (((struct sockaddr_in6 *)addr1)->sin6_scope_id !=
130
			    ((struct sockaddr_in6 *)addr2)->sin6_scope_id)
131
				return CMPSADDR_MISMATCH;
129
		break;
132
		break;
130
#endif
133
#endif
131
	default:
134
	default:

Return to bug 518496