Lines Matching +full:ip +full:- +full:addr
4 * SPDX-License-Identifier: Apache-2.0
27 static int transport_socket_open(struct net_if *iface, struct sockaddr *addr) in transport_socket_open() argument
34 int socket = zsock_socket(addr->sa_family, SOCK_DGRAM, IPPROTO_UDP); in transport_socket_open()
38 return -1; in transport_socket_open()
42 return -1; in transport_socket_open()
50 if (zsock_bind(socket, addr, sizeof(*addr))) { in transport_socket_open()
78 return -1; in transport_socket_open()
87 mreqn.imr_ifindex = net_if_get_by_iface(port->iface); in transport_join_multicast()
89 zsock_setsockopt(port->socket[1], IPPROTO_IP, in transport_join_multicast()
95 mreqn.ipv6mr_ifindex = net_if_get_by_iface(port->iface); in transport_join_multicast()
97 zsock_setsockopt(port->socket[0], IPPROTO_IPV6, in transport_join_multicast()
109 struct sockaddr_in addr = { in transport_udp_ipv4_open() local
115 socket = transport_socket_open(iface, (struct sockaddr *)&addr); in transport_udp_ipv4_open()
117 return -1; in transport_udp_ipv4_open()
121 LOG_ERR("Failed to set ip multicast ttl socket option"); in transport_udp_ipv4_open()
140 return -1; in transport_udp_ipv4_open()
148 struct sockaddr_in6 addr = { in transport_udp_ipv6_open() local
154 socket = transport_socket_open(iface, (struct sockaddr *)&addr); in transport_udp_ipv6_open()
156 return -1; in transport_udp_ipv6_open()
169 LOG_ERR("Failed to set ip multicast hops socket option"); in transport_udp_ipv6_open()
188 return -1; in transport_udp_ipv6_open()
191 static int transport_send(int socket, int port, void *buf, int length, struct sockaddr *addr) in transport_send() argument
197 if (!addr) { in transport_send()
200 net_sin(&m_addr)->sin_port = htons(port); in transport_send()
201 net_sin(&m_addr)->sin_addr.s_addr = mcast_addr.s_addr; in transport_send()
205 net_sin6(&m_addr)->sin6_port = htons(port); in transport_send()
206 memcpy(&net_sin6(&m_addr)->sin6_addr, in transport_send()
210 addr = &m_addr; in transport_send()
215 cnt = zsock_sendto(socket, buf, length, 0, addr, addrlen); in transport_send()
218 return -EFAULT; in transport_send()
231 transport_udp_ipv4_open(port->iface, socket_ports[i]) : in ptp_transport_open()
232 transport_udp_ipv6_open(port->iface, socket_ports[i]); in ptp_transport_open()
234 if (socket == -1) { in ptp_transport_open()
236 zsock_close(port->socket[PTP_SOCKET_EVENT]); in ptp_transport_open()
237 port->socket[PTP_SOCKET_EVENT] = -1; in ptp_transport_open()
240 return -1; in ptp_transport_open()
243 port->socket[i] = socket; in ptp_transport_open()
253 if (port->socket[i] >= 0) { in ptp_transport_close()
254 if (zsock_close(port->socket[i])) { in ptp_transport_close()
256 port->port_ds.id.port_number); in ptp_transport_close()
257 return -1; in ptp_transport_close()
261 port->socket[i] = -1; in ptp_transport_close()
272 int length = ntohs(msg->header.msg_length); in ptp_transport_send()
274 return transport_send(port->socket[idx], socket_port[idx], msg, length, NULL); in ptp_transport_send()
282 int length = ntohs(msg->header.msg_length); in ptp_transport_sendto()
284 return transport_send(port->socket[idx], socket_port[idx], msg, length, &msg->addr); in ptp_transport_sendto()
297 .iov_len = sizeof(msg->mtu), in ptp_transport_recv()
305 cnt = zsock_recvmsg(port->socket[idx], &msghdr, ZSOCK_MSG_DONTWAIT); in ptp_transport_recv()
311 if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SO_TIMESTAMPING) { in ptp_transport_recv()
312 memcpy(&msg->timestamp.host, CMSG_DATA(cmsg), sizeof(struct net_ptp_time)); in ptp_transport_recv()
319 int ptp_transport_protocol_addr(struct ptp_port *port, uint8_t *addr) in ptp_transport_protocol_addr() argument
321 __ASSERT_NO_MSG(addr); in ptp_transport_protocol_addr()
326 struct in_addr *ip = net_if_ipv4_get_global_addr(port->iface, NET_ADDR_PREFERRED); in ptp_transport_protocol_addr() local
328 if (ip) { in ptp_transport_protocol_addr()
330 *addr = ip->s_addr; in ptp_transport_protocol_addr()
333 struct in6_addr *ip = net_if_ipv6_get_global_addr(NET_ADDR_PREFERRED, &port->iface); in ptp_transport_protocol_addr() local
335 if (ip) { in ptp_transport_protocol_addr()
337 memcpy(addr, ip, length); in ptp_transport_protocol_addr()
346 return net_if_get_link_addr(port->iface); in ptp_transport_physical_addr()