svn commit: r245531 - user/ae/inet6/sys/netinet6
Andrey V. Elsukov
ae at FreeBSD.org
Thu Jan 17 03:18:54 UTC 2013
Author: ae
Date: Thu Jan 17 03:18:53 2013
New Revision: 245531
URL: http://svnweb.freebsd.org/changeset/base/245531
Log:
Add in6_getlinkzone() function. It returns zone id for the link-local
scope (currently it is equal to the interface's if_index). Also,
use M_ZERO flag in malloc().
Modified:
user/ae/inet6/sys/netinet6/scope6.c
user/ae/inet6/sys/netinet6/scope6_var.h
Modified: user/ae/inet6/sys/netinet6/scope6.c
==============================================================================
--- user/ae/inet6/sys/netinet6/scope6.c Thu Jan 17 02:42:08 2013 (r245530)
+++ user/ae/inet6/sys/netinet6/scope6.c Thu Jan 17 03:18:53 2013 (r245531)
@@ -95,8 +95,8 @@ scope6_ifattach(struct ifnet *ifp)
{
struct scope6_id *sid;
- sid = (struct scope6_id *)malloc(sizeof(*sid), M_IFADDR, M_WAITOK);
- bzero(sid, sizeof(*sid));
+ sid = (struct scope6_id *)malloc(sizeof(*sid), M_IFADDR,
+ M_WAITOK | M_ZERO);
/*
* XXX: IPV6_ADDR_SCOPE_xxx macros are not standard.
@@ -104,13 +104,8 @@ scope6_ifattach(struct ifnet *ifp)
*/
sid->s6id_list[IPV6_ADDR_SCOPE_INTFACELOCAL] = ifp->if_index;
sid->s6id_list[IPV6_ADDR_SCOPE_LINKLOCAL] = ifp->if_index;
-#ifdef MULTI_SCOPE
- /* by default, we don't care about scope boundary for these scopes. */
- sid->s6id_list[IPV6_ADDR_SCOPE_SITELOCAL] = 1;
- sid->s6id_list[IPV6_ADDR_SCOPE_ORGLOCAL] = 1;
-#endif
- return sid;
+ return (sid);
}
void
@@ -477,3 +472,14 @@ in6_getscope(struct in6_addr *in6)
return (0);
}
+
+/*
+ * Return zone id for the link-local scope.
+ */
+uint32_t
+in6_getlinkzone(const struct ifnet *ifp)
+{
+
+ return (ifp->if_index);
+}
+
Modified: user/ae/inet6/sys/netinet6/scope6_var.h
==============================================================================
--- user/ae/inet6/sys/netinet6/scope6_var.h Thu Jan 17 02:42:08 2013 (r245530)
+++ user/ae/inet6/sys/netinet6/scope6_var.h Thu Jan 17 03:18:53 2013 (r245531)
@@ -60,6 +60,7 @@ int sa6_recoverscope(struct sockaddr_in6
int in6_setscope(struct in6_addr *, struct ifnet *, u_int32_t *);
int in6_clearscope(struct in6_addr *);
uint16_t in6_getscope(struct in6_addr *);
+uint32_t in6_getlinkzone(const struct ifnet *);
#endif /* _KERNEL */
#endif /* _NETINET6_SCOPE6_VAR_H_ */
More information about the svn-src-user
mailing list