Lines Matching defs:vso
900 struct vxlan_socket *vso;
903 vso = malloc(sizeof(*vso), M_VXLAN, M_WAITOK | M_ZERO);
904 rm_init(&vso->vxlso_lock, "vxlansorm");
905 refcount_init(&vso->vxlso_refcnt, 0);
907 LIST_INIT(&vso->vxlso_vni_hash[i]);
908 vso->vxlso_laddr = *sa;
910 return (vso);
914 vxlan_socket_destroy(struct vxlan_socket *vso)
922 mc = &vso->vxlso_mc[i];
925 __func__, vso, i));
929 KASSERT(LIST_EMPTY(&vso->vxlso_vni_hash[i]),
931 __func__, vso, i));
934 so = vso->vxlso_sock;
936 vso->vxlso_sock = NULL;
940 rm_destroy(&vso->vxlso_lock);
941 free(vso, M_VXLAN);
945 vxlan_socket_release(struct vxlan_socket *vso)
950 destroy = VXLAN_SO_RELEASE(vso);
952 LIST_REMOVE(vso, vxlso_entry);
956 vxlan_socket_destroy(vso);
962 struct vxlan_socket *vso;
965 LIST_FOREACH(vso, &vxlan_socket_list, vxlso_entry) {
966 if (vxlan_sockaddr_cmp(&vso->vxlso_laddr, &vxlsa->sa) == 0) {
967 VXLAN_SO_ACQUIRE(vso);
973 return (vso);
977 vxlan_socket_insert(struct vxlan_socket *vso)
981 VXLAN_SO_ACQUIRE(vso);
982 LIST_INSERT_HEAD(&vxlan_socket_list, vso, vxlso_entry);
987 vxlan_socket_init(struct vxlan_socket *vso, struct ifnet *ifp)
994 error = socreate(vso->vxlso_laddr.sa.sa_family, &vso->vxlso_sock,
1001 error = udp_set_kernel_tunneling(vso->vxlso_sock,
1002 vxlan_rcv_udp_packet, NULL, vso);
1018 error = sosetopt(vso->vxlso_sock, &sopt);
1030 vxlan_socket_bind(struct vxlan_socket *vso, struct ifnet *ifp)
1037 laddr = vso->vxlso_laddr;
1039 error = sobind(vso->vxlso_sock, &laddr.sa, td);
1054 struct vxlan_socket *vso;
1072 vso = vxlan_socket_alloc(&laddr);
1073 if (vso == NULL)
1076 error = vxlan_socket_init(vso, ifp);
1080 error = vxlan_socket_bind(vso, ifp);
1089 vxlan_socket_insert(vso);
1090 *vsop = vso;
1095 vxlan_socket_destroy(vso);
1101 vxlan_socket_ifdetach(struct vxlan_socket *vso, struct ifnet *ifp,
1108 VXLAN_SO_RLOCK(vso, &tracker);
1110 LIST_FOREACH(sc, &vso->vxlso_vni_hash[i], vxl_entry)
1113 VXLAN_SO_RUNLOCK(vso, &tracker);
1120 struct vxlan_socket *vso;
1131 vso = vxlan_socket_lookup(&laddr);
1133 return (vso);
1154 vxlan_socket_mc_join_group(struct vxlan_socket *vso,
1175 error = sosetopt(vso->vxlso_sock, &sopt);
1188 * sotoinpcb(vso->vxlso_sock)->inp_moptions->
1206 error = sosetopt(vso->vxlso_sock, &sopt);
1221 vxlan_socket_mc_leave_group(struct vxlan_socket *vso,
1241 error = sosetopt(vso->vxlso_sock, &sopt);
1253 error = sosetopt(vso->vxlso_sock, &sopt);
1262 vxlan_socket_mc_add_group(struct vxlan_socket *vso,
1277 VXLAN_SO_WLOCK(vso);
1279 mc = &vso->vxlso_mc[i];
1289 VXLAN_SO_WUNLOCK(vso);
1294 error = vxlan_socket_mc_join_group(vso, group, local, &ifidx, &source);
1298 VXLAN_SO_WLOCK(vso);
1300 mc = &vso->vxlso_mc[i];
1309 VXLAN_SO_WUNLOCK(vso);
1311 error = vxlan_socket_mc_leave_group(vso, group, &source, ifidx);
1318 VXLAN_SO_WUNLOCK(vso);
1326 vxlan_socket_mc_release_group_by_idx(struct vxlan_socket *vso, int idx)
1333 ("%s: vso %p idx %d out of bounds", __func__, vso, idx));
1336 mc = &vso->vxlso_mc[idx];
1338 VXLAN_SO_WLOCK(vso);
1347 VXLAN_SO_WUNLOCK(vso);
1355 vxlan_socket_mc_leave_group(vso, &group, &source, ifidx);
1360 vxlan_socket_lookup_softc_locked(struct vxlan_socket *vso, uint32_t vni)
1365 VXLAN_SO_LOCK_ASSERT(vso);
1368 LIST_FOREACH(sc, &vso->vxlso_vni_hash[hash], vxl_entry) {
1379 vxlan_socket_lookup_softc(struct vxlan_socket *vso, uint32_t vni)
1384 VXLAN_SO_RLOCK(vso, &tracker);
1385 sc = vxlan_socket_lookup_softc_locked(vso, vni);
1386 VXLAN_SO_RUNLOCK(vso, &tracker);
1392 vxlan_socket_insert_softc(struct vxlan_socket *vso, struct vxlan_softc *sc)
1400 VXLAN_SO_WLOCK(vso);
1401 tsc = vxlan_socket_lookup_softc_locked(vso, vni);
1403 VXLAN_SO_WUNLOCK(vso);
1409 LIST_INSERT_HEAD(&vso->vxlso_vni_hash[hash], sc, vxl_entry);
1410 VXLAN_SO_WUNLOCK(vso);
1416 vxlan_socket_remove_softc(struct vxlan_socket *vso, struct vxlan_softc *sc)
1419 VXLAN_SO_WLOCK(vso);
1421 VXLAN_SO_WUNLOCK(vso);
1532 struct vxlan_socket *vso;
1537 vso = NULL;
1550 error = vxlan_socket_create(ifp, multicast, saddr, &vso);
1553 vso = vxlan_socket_mc_lookup(saddr);
1555 vso = vxlan_socket_lookup(saddr);
1557 if (vso == NULL) {
1569 error = vxlan_socket_mc_add_group(vso, daddr, saddr,
1575 sc->vxl_sock = vso;
1576 error = vxlan_socket_insert_softc(vso, sc);
1587 if (vso != NULL) {
1589 vxlan_socket_mc_release_group_by_idx(vso,
1595 vxlan_socket_release(vso);
1818 struct vxlan_socket *vso;
1830 vso = sc->vxl_sock;
1840 if (vso != NULL) {
1841 vxlan_socket_remove_softc(vso, sc);
1844 vxlan_socket_mc_release_group_by_idx(vso,
1858 if (vso != NULL)
1859 vxlan_socket_release(vso);
2814 struct vxlan_socket *vso;
2820 vso = xvso;
2848 error = vxlan_input(vso, vni, &m, srcsa);
2859 vxlan_input(struct vxlan_socket *vso, uint32_t vni, struct mbuf **m0,
2873 sc = vxlan_socket_lookup_softc(vso, vni);
3616 struct vxlan_socket *vso;
3625 LIST_FOREACH(vso, &vxlan_socket_list, vxlso_entry)
3626 vxlan_socket_ifdetach(vso, ifp, &list);