Lines Matching refs:si
340 static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *inaddr, struct socka… in convert_in_un_remote() argument
350 switch (si->family) { in convert_in_un_remote()
359 switch (si->type) { in convert_in_un_remote()
398 switch (si->type) { in convert_in_un_remote()
438 static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *inaddr, struct sockad… in convert_in_un_alloc() argument
449 switch (si->family) { in convert_in_un_alloc()
461 switch (si->type) { in convert_in_un_alloc()
505 switch (si->type) { in convert_in_un_alloc()
537 set_port(si->family, prt, si->myname); in convert_in_un_alloc()
557 static int sockaddr_convert_to_un(struct socket_info *si, const struct sockaddr *in_addr, socklen_t… in sockaddr_convert_to_un() argument
570 switch (si->type) { in sockaddr_convert_to_un()
579 return convert_in_un_alloc(si, in_addr, out_addr, bcast); in sockaddr_convert_to_un()
581 return convert_in_un_remote(si, in_addr, out_addr, bcast); in sockaddr_convert_to_un()
591 static int sockaddr_convert_from_un(const struct socket_info *si, in sockaddr_convert_from_un() argument
611 switch (si->type) { in sockaddr_convert_from_un()
930 static void swrap_dump_packet(struct socket_info *si, const struct sockaddr *addr, in swrap_dump_packet() argument
951 switch (si->family) { in swrap_dump_packet()
963 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
965 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
968 tcp_seq = si->io.pck_snd; in swrap_dump_packet()
969 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
972 si->io.pck_snd += 1; in swrap_dump_packet()
977 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
979 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
982 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
983 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
986 si->io.pck_rcv += 1; in swrap_dump_packet()
991 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
993 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
997 tcp_seq = si->io.pck_snd - 1; in swrap_dump_packet()
998 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
1005 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1007 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1010 tcp_seq = si->io.pck_snd; in swrap_dump_packet()
1011 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
1017 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1019 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1022 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1023 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1026 si->io.pck_rcv += 1; in swrap_dump_packet()
1031 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1033 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1036 tcp_seq = si->io.pck_snd; in swrap_dump_packet()
1037 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
1040 si->io.pck_snd += 1; in swrap_dump_packet()
1045 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1047 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1050 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1051 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1057 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1058 dest_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1060 tcp_seq = si->io.pck_snd; in swrap_dump_packet()
1061 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
1064 si->io.pck_snd += len; in swrap_dump_packet()
1069 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1070 src_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1072 if (si->type == SOCK_DGRAM) { in swrap_dump_packet()
1073 swrap_dump_packet(si, si->peername, in swrap_dump_packet()
1079 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1080 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1086 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1087 src_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1089 if (si->type == SOCK_DGRAM) { in swrap_dump_packet()
1093 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1094 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1100 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1101 src_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1103 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1104 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1107 si->io.pck_rcv += len; in swrap_dump_packet()
1112 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1113 src_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1115 if (si->type == SOCK_DGRAM) { in swrap_dump_packet()
1119 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1120 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1126 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1129 si->io.pck_snd += len; in swrap_dump_packet()
1134 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1142 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1145 si->io.pck_rcv += len; in swrap_dump_packet()
1150 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1152 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1153 dest_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1155 tcp_seq = si->io.pck_snd; in swrap_dump_packet()
1156 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
1159 si->io.pck_snd += 1; in swrap_dump_packet()
1164 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1166 dest_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1167 src_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1169 tcp_seq = si->io.pck_rcv; in swrap_dump_packet()
1170 tcp_ack = si->io.pck_snd; in swrap_dump_packet()
1173 si->io.pck_rcv += 1; in swrap_dump_packet()
1178 if (si->type != SOCK_STREAM) return; in swrap_dump_packet()
1180 src_addr = (const struct sockaddr_in *)si->myname; in swrap_dump_packet()
1181 dest_addr = (const struct sockaddr_in *)si->peername; in swrap_dump_packet()
1183 tcp_seq = si->io.pck_snd; in swrap_dump_packet()
1184 tcp_ack = si->io.pck_rcv; in swrap_dump_packet()
1194 packet = swrap_packet_init(&tv, src_addr, dest_addr, si->type, in swrap_dump_packet()
1212 struct socket_info *si; in swrap_socket() local
1256 si = (struct socket_info *)calloc(1, sizeof(struct socket_info)); in swrap_socket()
1258 si->family = family; in swrap_socket()
1259 si->type = type; in swrap_socket()
1260 si->protocol = protocol; in swrap_socket()
1261 si->fd = fd; in swrap_socket()
1263 SWRAP_DLIST_ADD(sockets, si); in swrap_socket()
1265 return si->fd; in swrap_socket()
1377 static int swrap_auto_bind(struct socket_info *si) in swrap_auto_bind() argument
1395 switch (si->family) { in swrap_auto_bind()
1399 switch (si->type) { in swrap_auto_bind()
1416 si->myname_len = sizeof(in); in swrap_auto_bind()
1417 si->myname = sockaddr_dup(&in, si->myname_len); in swrap_auto_bind()
1424 switch (si->type) { in swrap_auto_bind()
1439 si->myname_len = sizeof(in6); in swrap_auto_bind()
1440 si->myname = sockaddr_dup(&in6, si->myname_len); in swrap_auto_bind()
1460 ret = real_bind(si->fd, (struct sockaddr *)&un_addr, sizeof(un_addr)); in swrap_auto_bind()
1463 si->tmp_path = strdup(un_addr.sun_path); in swrap_auto_bind()
1464 si->bound = 1; in swrap_auto_bind()
1473 set_port(si->family, port, si->myname); in swrap_auto_bind()
1483 struct socket_info *si = find_socket_info(s); in swrap_connect() local
1485 if (!si) { in swrap_connect()
1489 if (si->bound == 0) { in swrap_connect()
1490 ret = swrap_auto_bind(si); in swrap_connect()
1494 if (si->family != serv_addr->sa_family) { in swrap_connect()
1499 ret = sockaddr_convert_to_un(si, (const struct sockaddr *)serv_addr, addrlen, &un_addr, 0, NULL); in swrap_connect()
1502 swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_SEND, NULL, 0); in swrap_connect()
1513 si->peername_len = addrlen; in swrap_connect()
1514 si->peername = sockaddr_dup(serv_addr, addrlen); in swrap_connect()
1516 swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_RECV, NULL, 0); in swrap_connect()
1517 swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_ACK, NULL, 0); in swrap_connect()
1519 swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_UNREACH, NULL, 0); in swrap_connect()
1529 struct socket_info *si = find_socket_info(s); in swrap_bind() local
1531 if (!si) { in swrap_bind()
1535 si->myname_len = addrlen; in swrap_bind()
1536 si->myname = sockaddr_dup(myaddr, addrlen); in swrap_bind()
1538 …ret = sockaddr_convert_to_un(si, (const struct sockaddr *)myaddr, addrlen, &un_addr, 1, &si->bcast… in swrap_bind()
1547 si->bound = 1; in swrap_bind()
1556 struct socket_info *si = find_socket_info(s); in swrap_listen() local
1558 if (!si) { in swrap_listen()
1569 struct socket_info *si = find_socket_info(s); in swrap_getpeername() local
1571 if (!si) { in swrap_getpeername()
1575 if (!si->peername) in swrap_getpeername()
1581 memcpy(name, si->peername, si->peername_len); in swrap_getpeername()
1582 *addrlen = si->peername_len; in swrap_getpeername()
1589 struct socket_info *si = find_socket_info(s); in swrap_getsockname() local
1591 if (!si) { in swrap_getsockname()
1595 memcpy(name, si->myname, si->myname_len); in swrap_getsockname()
1596 *addrlen = si->myname_len; in swrap_getsockname()
1603 struct socket_info *si = find_socket_info(s); in swrap_getsockopt() local
1605 if (!si) { in swrap_getsockopt()
1619 struct socket_info *si = find_socket_info(s); in swrap_setsockopt() local
1621 if (!si) { in swrap_setsockopt()
1629 switch (si->family) { in swrap_setsockopt()
1643 struct socket_info *si = find_socket_info(s); in swrap_recvfrom() local
1645 if (!si) { in swrap_recvfrom()
1655 if (sockaddr_convert_from_un(si, &un_addr, un_addrlen, in swrap_recvfrom()
1656 si->family, from, fromlen) == -1) { in swrap_recvfrom()
1660 swrap_dump_packet(si, from, SWRAP_RECVFROM, buf, ret); in swrap_recvfrom()
1670 struct socket_info *si = find_socket_info(s); in swrap_sendto() local
1673 if (!si) { in swrap_sendto()
1677 switch (si->type) { in swrap_sendto()
1682 if (si->bound == 0) { in swrap_sendto()
1683 ret = swrap_auto_bind(si); in swrap_sendto()
1687 ret = sockaddr_convert_to_un(si, to, tolen, &un_addr, 0, &bcast); in swrap_sendto()
1707 swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len); in swrap_sendto()
1726 swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len); in swrap_sendto()
1727 swrap_dump_packet(si, to, SWRAP_SENDTO_UNREACH, buf, len); in swrap_sendto()
1729 swrap_dump_packet(si, to, SWRAP_SENDTO, buf, ret); in swrap_sendto()
1738 struct socket_info *si = find_socket_info(s); in swrap_ioctl() local
1741 if (!si) { in swrap_ioctl()
1751 swrap_dump_packet(si, NULL, SWRAP_PENDING_RST, NULL, 0); in swrap_ioctl()
1753 swrap_dump_packet(si, NULL, SWRAP_PENDING_RST, NULL, 0); in swrap_ioctl()
1764 struct socket_info *si = find_socket_info(s); in swrap_recv() local
1766 if (!si) { in swrap_recv()
1772 swrap_dump_packet(si, NULL, SWRAP_RECV_RST, NULL, 0); in swrap_recv()
1774 swrap_dump_packet(si, NULL, SWRAP_RECV_RST, NULL, 0); in swrap_recv()
1776 swrap_dump_packet(si, NULL, SWRAP_RECV, buf, ret); in swrap_recv()
1786 struct socket_info *si = find_socket_info(s); in swrap_send() local
1788 if (!si) { in swrap_send()
1795 swrap_dump_packet(si, NULL, SWRAP_SEND, buf, len); in swrap_send()
1796 swrap_dump_packet(si, NULL, SWRAP_SEND_RST, NULL, 0); in swrap_send()
1798 swrap_dump_packet(si, NULL, SWRAP_SEND, buf, ret); in swrap_send()
1806 struct socket_info *si = find_socket_info(fd); in swrap_close() local
1809 if (!si) { in swrap_close()
1813 SWRAP_DLIST_REMOVE(sockets, si); in swrap_close()
1815 if (si->myname && si->peername) { in swrap_close()
1816 swrap_dump_packet(si, NULL, SWRAP_CLOSE_SEND, NULL, 0); in swrap_close()
1821 if (si->myname && si->peername) { in swrap_close()
1822 swrap_dump_packet(si, NULL, SWRAP_CLOSE_RECV, NULL, 0); in swrap_close()
1823 swrap_dump_packet(si, NULL, SWRAP_CLOSE_ACK, NULL, 0); in swrap_close()
1826 if (si->path) free(si->path); in swrap_close()
1827 if (si->myname) free(si->myname); in swrap_close()
1828 if (si->peername) free(si->peername); in swrap_close()
1829 if (si->tmp_path) { in swrap_close()
1830 unlink(si->tmp_path); in swrap_close()
1831 free(si->tmp_path); in swrap_close()
1833 free(si); in swrap_close()
1873 struct socket_info *si; in swrap_dup() local
1876 si = find_socket_info(oldd); in swrap_dup()
1877 if (si == NULL) in swrap_dup()
1880 fd = real_dup(si->fd); in swrap_dup()
1884 return dup_internal(si, fd); in swrap_dup()