Lines Matching defs:addr
28 struct mptcp_addr_info addr;
69 addr_equals = a->addr.s_addr == b->addr.s_addr;
75 addr_equals = a->addr.s_addr == b->addr6.s6_addr32[3];
78 addr_equals = a->addr6.s6_addr32[3] == b->addr.s_addr;
90 void mptcp_local_address(const struct sock_common *skc, struct mptcp_addr_info *addr)
92 addr->family = skc->skc_family;
93 addr->port = htons(skc->skc_num);
94 if (addr->family == AF_INET)
95 addr->addr.s_addr = skc->skc_rcv_saddr;
97 else if (addr->family == AF_INET6)
98 addr->addr6 = skc->skc_v6_rcv_saddr;
103 struct mptcp_addr_info *addr)
105 addr->family = skc->skc_family;
106 addr->port = skc->skc_dport;
107 if (addr->family == AF_INET)
108 addr->addr.s_addr = skc->skc_daddr;
110 else if (addr->family == AF_INET6)
111 addr->addr6 = skc->skc_v6_daddr;
164 if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap))
186 if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap))
246 const struct mptcp_addr_info *addr)
253 if (mptcp_addresses_equal(&entry->addr, addr, true))
270 if (mptcp_addresses_equal(&entry->addr, &saddr, true)) {
295 if (!entry->addr.id)
306 pr_debug("retransmit ADD_ADDR id=%d", entry->addr.id);
307 mptcp_pm_announce_addr(msk, &entry->addr, false);
327 const struct mptcp_addr_info *addr, bool check_id)
333 entry = mptcp_lookup_anno_list_by_saddr(msk, addr);
334 if (entry && (!check_id || entry->addr.id == addr->id))
338 if (entry && (!check_id || entry->addr.id == addr->id))
345 const struct mptcp_addr_info *addr)
353 add_entry = mptcp_lookup_anno_list_by_saddr(msk, addr);
370 add_entry->addr = *addr;
501 if (entry->addr.id == id)
515 mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) ||
516 (lookup_by_id && entry->addr.id == info->id))
548 __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap);
549 msk->mpc_endpoint_id = entry->addr.id;
580 if (mptcp_pm_alloc_anno_list(msk, &local->addr)) {
581 __clear_bit(local->addr.id, msk->pm.id_avail_bitmap);
583 mptcp_pm_announce_addr(msk, &local->addr, false);
603 __clear_bit(local->addr.id, msk->pm.id_avail_bitmap);
604 nr = fill_remote_addresses_vec(msk, &local->addr, fullmesh, addrs);
610 __mptcp_subflow_connect(sk, &local->addr, &addrs[i]);
647 if (!mptcp_pm_addr_families_match(sk, &entry->addr, remote))
652 addrs[i++] = entry->addr;
743 struct mptcp_addr_info *addr,
756 if (!mptcp_addresses_equal(&local, addr, addr->port))
924 if (test_bit(entry->addr.id, pernet->id_bitmap)) {
933 entry->addr.port = 0;
935 if (mptcp_addresses_equal(&cur->addr, &entry->addr,
936 cur->addr.port || entry->addr.port)) {
945 if (entry->addr.id)
949 entry->addr.id = cur->addr.id;
956 if (!entry->addr.id && needs_id) {
958 entry->addr.id = find_next_zero_bit(pernet->id_bitmap,
961 if (!entry->addr.id && pernet->next_id != 1) {
967 if (!entry->addr.id && needs_id)
970 __set_bit(entry->addr.id, pernet->id_bitmap);
971 if (entry->addr.id > pernet->next_id)
972 pernet->next_id = entry->addr.id;
984 if (!entry->addr.port)
988 ret = entry->addr.id;
1009 struct sockaddr_storage addr;
1014 err = sock_create_kern(sock_net(sk), entry->addr.family,
1041 mptcp_info2sockaddr(&entry->addr, &addr, entry->addr.family);
1043 if (entry->addr.family == AF_INET6)
1047 err = inet_bind_sk(ssk, (struct sockaddr *)&addr, addrlen);
1050 err = inet6_bind_sk(ssk, (struct sockaddr *)&addr, addrlen);
1079 if (mptcp_addresses_equal(&entry->addr, skc, entry->addr.port)) {
1080 ret = entry->addr.id;
1093 entry->addr = *skc;
1094 entry->addr.id = 0;
1095 entry->addr.port = 0;
1188 struct mptcp_addr_info *addr,
1205 addr->id = nla_get_u8(tb[MPTCP_PM_ADDR_ATTR_ID]);
1216 addr->family = nla_get_u16(tb[MPTCP_PM_ADDR_ATTR_FAMILY]);
1217 if (addr->family != AF_INET
1219 && addr->family != AF_INET6
1226 addr_addr = mptcp_pm_family_to_addr(addr->family);
1234 if (addr->family == AF_INET6)
1235 addr->addr6 = nla_get_in6_addr(tb[addr_addr]);
1238 addr->addr.s_addr = nla_get_in_addr(tb[addr_addr]);
1241 addr->port = htons(nla_get_u16(tb[MPTCP_PM_ADDR_ATTR_PORT]));
1247 struct mptcp_addr_info *addr)
1251 memset(addr, 0, sizeof(*addr));
1253 return mptcp_pm_parse_pm_addr_attr(tb, attr, info, addr, true);
1265 err = mptcp_pm_parse_pm_addr_attr(tb, attr, info, &entry->addr, require_family);
1279 entry->addr.port = htons(nla_get_u16(tb[MPTCP_PM_ADDR_ATTR_PORT]));
1331 struct mptcp_pm_addr_entry addr, *entry;
1334 ret = mptcp_pm_parse_entry(attr, info, true, &addr);
1338 if (addr.addr.port && !(addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) {
1343 if (addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL &&
1344 addr.flags & MPTCP_PM_ADDR_FLAG_FULLMESH) {
1349 if (addr.flags & MPTCP_PM_ADDR_FLAG_IMPLICIT) {
1356 GENL_SET_ERR_MSG(info, "can't allocate addr");
1360 *entry = addr;
1361 if (entry->addr.port) {
1402 const struct mptcp_addr_info *addr)
1406 entry = mptcp_pm_del_add_timer(msk, addr, false);
1417 const struct mptcp_addr_info *addr,
1423 list.ids[list.nr++] = addr->id;
1425 ret = remove_anno_list_by_saddr(msk, addr);
1437 const struct mptcp_addr_info *addr = &entry->addr;
1442 pr_debug("remove_id=%d", addr->id);
1444 list.ids[list.nr++] = addr->id;
1454 mptcp_pm_remove_anno_addr(msk, addr, false);
1459 remove_subflow = lookup_subflow_by_saddr(&msk->conn_list, addr);
1460 mptcp_pm_remove_anno_addr(msk, addr, remove_subflow &&
1475 struct mptcp_addr_info *addr)
1491 if (!mptcp_addresses_equal(&msk_local, addr, addr->port))
1513 struct mptcp_pm_addr_entry addr, *entry;
1517 ret = mptcp_pm_parse_entry(attr, info, false, &addr);
1526 if (addr.addr.id == 0)
1527 return mptcp_nl_remove_id_zero_address(sock_net(skb->sk), &addr.addr);
1530 entry = __lookup_addr_by_id(pernet, addr.addr.id);
1547 __clear_bit(entry->addr.id, pernet->id_bitmap);
1563 if ((remove_anno_list_by_saddr(msk, &entry->addr) ||
1564 lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) &&
1566 alist.ids[alist.nr++] = entry->addr.id;
1583 if (lookup_subflow_by_saddr(&msk->conn_list, &entry->addr) &&
1585 slist.ids[slist.nr++] = entry->addr.id;
1587 if (remove_anno_list_by_saddr(msk, &entry->addr) &&
1589 alist.ids[alist.nr++] = entry->addr.id;
1665 struct mptcp_addr_info *addr = &entry->addr;
1672 if (nla_put_u16(skb, MPTCP_PM_ADDR_ATTR_FAMILY, addr->family))
1674 if (nla_put_u16(skb, MPTCP_PM_ADDR_ATTR_PORT, ntohs(addr->port)))
1676 if (nla_put_u8(skb, MPTCP_PM_ADDR_ATTR_ID, addr->id))
1684 if (addr->family == AF_INET &&
1686 addr->addr.s_addr))
1689 else if (addr->family == AF_INET6 &&
1690 nla_put_in6_addr(skb, MPTCP_PM_ADDR_ATTR_ADDR6, &addr->addr6))
1705 struct mptcp_pm_addr_entry addr, *entry;
1710 ret = mptcp_pm_parse_entry(attr, info, false, &addr);
1727 entry = __lookup_addr_by_id(pernet, addr.addr.id);
1770 if (entry->addr.id <= id)
1784 id = entry->addr.id;
1869 struct mptcp_addr_info *addr)
1873 list.ids[list.nr++] = addr->id;
1882 struct mptcp_addr_info *addr,
1897 ret = mptcp_pm_nl_mp_prio_send_ack(msk, addr, NULL, bkup);
1899 mptcp_pm_nl_fullmesh(msk, addr);
1910 int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *addr, u8 bkup)
1918 if (addr->addr.family == AF_UNSPEC) {
1920 if (!addr->addr.id)
1925 entry = __lookup_addr(pernet, &addr->addr, lookup_by_id);
1930 if ((addr->flags & MPTCP_PM_ADDR_FLAG_FULLMESH) &&
1936 changed = (addr->flags ^ entry->flags) & mask;
1937 entry->flags = (entry->flags & ~mask) | (addr->flags & mask);
1938 *addr = *entry;
1941 mptcp_nl_set_flags(net, &addr->addr, bkup, changed);
1947 struct mptcp_pm_addr_entry remote = { .addr = { .family = AF_UNSPEC }, };
1948 struct mptcp_pm_addr_entry addr = { .addr = { .family = AF_UNSPEC }, };
1956 ret = mptcp_pm_parse_entry(attr, info, false, &addr);
1966 if (addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP)
1969 return mptcp_pm_set_flags(net, token, &addr, &remote, bkup);
2177 if (nla_put_in_addr(skb, MPTCP_ATTR_DADDR4, info->addr.s_addr))