Lines Matching defs:ipif

84 #define	SCTP_IS_IPIF_LOOPBACK(ipif)		\
85 ((ipif)->sctp_ipif_ill->sctp_ill_flags & PHYI_LOOPBACK)
87 #define SCTP_IS_IPIF_LINKLOCAL(ipif) \
88 ((ipif)->sctp_ipif_isv6 && \
89 IN6_IS_ADDR_LINKLOCAL(&(ipif)->sctp_ipif_saddr))
91 #define SCTP_UNSUPP_AF(ipif, supp_af) \
92 ((!(ipif)->sctp_ipif_isv6 && !((supp_af) & PARM_SUPP_V4)) || \
93 ((ipif)->sctp_ipif_isv6 && !((supp_af) & PARM_SUPP_V6)))
95 #define SCTP_IPIF_ZONE_MATCH(sctp, ipif) \
96 IPCL_ZONE_MATCH((sctp)->sctp_connp, (ipif)->sctp_ipif_zoneid)
303 sctp_ipif_t *ipif;
387 ipif = sctp_lookup_ipif_addr(&addr, B_TRUE,
390 if (ipif == NULL) {
394 } else if (check_addrs && SCTP_IS_IPIF_LOOPBACK(ipif) &&
396 SCTP_IPIF_REFRELE(ipif);
409 err = sctp_ipif_hash_insert(sctp, ipif, KM_SLEEP,
412 SCTP_IPIF_REFRELE(ipif);
455 sctp_ipif_hash_insert(sctp_t *sctp, sctp_ipif_t *ipif, int sleep,
462 hindex = SCTP_IPIF_ADDR_HASH(ipif->sctp_ipif_saddr,
463 ipif->sctp_ipif_isv6);
468 &ipif->sctp_ipif_saddr)) {
469 if (ipif->sctp_ipif_id !=
472 SCTP_IPIFS_DOWN && ipif->sctp_ipif_state ==
475 ipif_obj->saddr_ipifp = ipif;
480 } else if (!allow_dup || ipif->sctp_ipif_id ==
496 ipif_obj->saddr_ipifp = ipif;
524 sctp_ipif_hash_remove(sctp_t *sctp, sctp_ipif_t *ipif, boolean_t locked)
530 hindex = SCTP_IPIF_ADDR_HASH(ipif->sctp_ipif_saddr,
531 ipif->sctp_ipif_isv6);
537 &ipif->sctp_ipif_saddr)) {
542 sctp_fix_saddr(sctp, &ipif->sctp_ipif_saddr);
829 /* move ipif from f_ill to t_ill */
831 sctp_move_ipif(ipif_t *ipif, ill_t *f_ill, ill_t *t_ill)
838 netstack_t *ns = ipif->ipif_ill->ill_ipst->ips_netstack;
866 hindex = SCTP_IPIF_ADDR_HASH(ipif->ipif_v6lcl_addr,
867 ipif->ipif_ill->ill_isv6);
870 if (sctp_ipif->sctp_ipif_id == ipif->ipif_seqid)
877 ip1dbg(("sctp_move_ipif: error moving ipif %p from %p to %p\n",
878 (void *)ipif, (void *)f_ill, (void *)t_ill));
952 * Given an ipif, walk the hash list in the global ipif table and for
953 * any other SCTP ipif with the same address and non-zero reference, walk
955 * new SCTP ipif. If it is a loopback interface, then there could be
960 sctp_chk_and_updt_saddr(int hindex, sctp_ipif_t *ipif, sctp_stack_t *sctps)
966 ASSERT(ipif->sctp_ipif_state == SCTP_IPIFS_UP);
971 if (sipif->sctp_ipif_id != ipif->sctp_ipif_id &&
973 &ipif->sctp_ipif_saddr) && sipif->sctp_ipif_refcnt > 0 &&
974 (!SCTP_IS_IPIF_LOOPBACK(ipif) || ipif->sctp_ipif_zoneid ==
978 * and we are here because ipif has been brought
986 sctp_update_saddrs(sipif, ipif, hindex, sctps);
995 * Insert a new SCTP ipif using 'ipif'. v6addr is the address that existed
996 * prior to the current address in 'ipif'. Only when an existing address
998 * exists in the global SCTP ipif table, then we either removed it, if
1002 * address on a different SCTP ipif and update in that case.
1005 sctp_update_ipif_addr(ipif_t *ipif, in6_addr_t v6addr)
1007 ill_t *ill = ipif->ipif_ill;
1017 sctps = ipif->ipif_ill->ill_ipst->ips_netstack->netstack_sctp;
1020 hindex = SCTP_IPIF_ADDR_HASH(ipif->ipif_v6lcl_addr, ill->ill_isv6);
1028 ipif->ipif_zoneid, B_TRUE, SCTP_ILL_TO_PHYINDEX(ill),
1029 ipif->ipif_seqid, B_FALSE, sctps);
1055 if (IN6_ARE_ADDR_EQUAL(&ipif->ipif_v6lcl_addr, &v6addr)) {
1060 if (ipif->ipif_flags & IPIF_UP &&
1067 osctp_ipif->sctp_ipif_flags = ipif->ipif_flags;
1108 "IPIF %p to SCTP's IPIF list", (void *)ipif);
1115 sctp_ipif->sctp_ipif_saddr = ipif->ipif_v6lcl_addr;
1118 sctp_ipif->sctp_ipif_zoneid = ipif->ipif_zoneid;
1119 sctp_ipif->sctp_ipif_id = ipif->ipif_seqid;
1120 if (ipif->ipif_flags & IPIF_UP)
1124 sctp_ipif->sctp_ipif_flags = ipif->ipif_flags;
1139 /* Insert, Remove, Mark up or Mark down the ipif */
1141 sctp_update_ipif(ipif_t *ipif, int op)
1143 ill_t *ill = ipif->ipif_ill;
1149 netstack_t *ns = ipif->ipif_ill->ill_ipst->ips_netstack;
1152 ip2dbg(("sctp_update_ipif: %s %d\n", ill->ill_name, ipif->ipif_seqid));
1173 hindex = SCTP_IPIF_ADDR_HASH(ipif->ipif_v6lcl_addr,
1174 ipif->ipif_ill->ill_isv6);
1177 if (sctp_ipif->sctp_ipif_id == ipif->ipif_seqid) {
1179 &ipif->ipif_v6lcl_addr));
1233 sctp_ipif->sctp_ipif_flags = ipif->ipif_flags;
1236 ipif->ipif_ill->ill_ipst->ips_netstack->netstack_sctp);
1244 sctp_ipif->sctp_ipif_zoneid = ipif->ipif_zoneid;
1245 sctp_ipif->sctp_ipif_flags = ipif->ipif_flags;
1255 sctp_ipif->sctp_ipif_flags = ipif->ipif_flags;
1441 sctp_ipif_t *ipif;
1443 ipif = obj->saddr_ipifp;
1446 if (IN6_ARE_ADDR_EQUAL(&ipif->sctp_ipif_saddr,
1458 if ((SCTP_IS_IPIF_LOOPBACK(ipif) &&
1460 SCTP_IS_IPIF_LINKLOCAL(ipif) ||
1461 SCTP_UNSUPP_AF(ipif, supp_af)) {
1471 sctp_ipif_hash_remove(sctp, ipif,
1475 sctp_ipif_hash_remove(sctp, ipif, B_TRUE);
1508 sctp_ipif_t *ipif;
1510 ipif = obj->saddr_ipifp;
1512 ipif->sctp_ipif_isv6 == isv6 &&
1513 ipif->sctp_ipif_state == SCTP_IPIFS_UP) {
1516 return (ipif->sctp_ipif_saddr);
1580 sctp_ipif_t *ipif = obj->saddr_ipifp;
1581 in6_addr_t addr = ipif->sctp_ipif_saddr;
1584 if ((ipif->sctp_ipif_state == SCTP_IPIFS_CONDEMNED) ||
1586 (SCTP_IS_IPIF_LOOPBACK(ipif) && skip_lback)) {
1683 sctp_ipif_t *ipif;
1688 ipif = obj->saddr_ipifp;
1691 ipif_lb = SCTP_IS_IPIF_LOOPBACK(ipif);
1692 ipif_ll = SCTP_IS_IPIF_LINKLOCAL(ipif);
1693 unsupp_af = SCTP_UNSUPP_AF(ipif, supp_af);
1705 sctp_ipif_hash_remove(sctp, ipif,
1709 sctp_ipif_hash_remove(sctp, ipif, B_TRUE);
1717 if (!SCTP_IPIF_USABLE(ipif->sctp_ipif_state))
1721 addr = ipif->sctp_ipif_saddr;
1722 if (!ipif->sctp_ipif_isv6) {
1942 sctp_ipif_t *ipif;
1944 if (psize < sizeof (ipif->sctp_ipif_saddr)) {
1950 ipif = obj->saddr_ipifp;
1951 bcopy(&ipif->sctp_ipif_saddr, p,
1952 sizeof (ipif->sctp_ipif_saddr));
1953 p += sizeof (ipif->sctp_ipif_saddr);
1954 psize -= sizeof (ipif->sctp_ipif_saddr);