1 #ifndef _NETINET_IN_SELSRC_H
2 #define _NETINET_IN_SELSRC_H
3 
4 #define   IN_SELECTSRC_LEN    128
5 #define   IN_SCORE_SRC_MAX    8
6 
7 typedef int (*in_score_src_t)(const struct in_addr *src,
8                               int preference, int idx,
9                                     const struct in_addr *dst);
10 
11 struct in_ifselsrc {
12           uint32_t            iss_seqno;
13           in_score_src_t                iss_score_src[IN_SCORE_SRC_MAX];
14 };
15 
16 struct in_ifsysctl {
17           struct ifnet                  *isc_ifp;
18           struct sysctllog    *isc_log;
19           struct in_ifselsrc  *isc_selsrc;
20 };
21 
22 enum in_category {
23           IN_CATEGORY_LINKLOCAL = 0,
24           IN_CATEGORY_PRIVATE,
25           IN_CATEGORY_OTHER
26 };
27 
28 struct ifaddr *in_getifa(struct ifaddr *, const struct sockaddr *);
29 
30 void      *in_selsrc_domifattach(struct ifnet *ifp);
31 void      in_selsrc_domifdetach(struct ifnet *ifp, void *aux);
32 
33 #endif /* _NETINET_IN_SELSRC_H */
34