mirror of
https://github.com/emqx/neuron.git
synced 2026-10-26 03:40:01 +08:00
connect: get udp bind port
This commit is contained in:
@@ -303,6 +303,7 @@ int neu_conn_tcp_server_wait_msg(neu_conn_t *conn, int fd, void *context,
|
||||
int is_ipv4(const char *ip);
|
||||
int is_ipv6(const char *ip);
|
||||
|
||||
bool neu_conn_is_connected(neu_conn_t *conn);
|
||||
bool neu_conn_is_connected(neu_conn_t *conn);
|
||||
uint16_t neu_conn_udp_act_port(neu_conn_t *conn);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -69,6 +69,8 @@ struct neu_conn {
|
||||
uint8_t *buf;
|
||||
uint16_t buf_size;
|
||||
uint16_t offset;
|
||||
|
||||
uint16_t udp_act_port;
|
||||
};
|
||||
|
||||
static void conn_tcp_server_add_client(neu_conn_t *conn, int fd,
|
||||
@@ -951,6 +953,13 @@ static void conn_connect(neu_conn_t *conn)
|
||||
return;
|
||||
}
|
||||
|
||||
struct sockaddr_in local_addr = { 0 };
|
||||
socklen_t local_addr_len = sizeof(local_addr);
|
||||
if (getsockname(fd, (struct sockaddr *) &local_addr, &local_addr_len) ==
|
||||
0) {
|
||||
conn->udp_act_port = ntohs(local_addr.sin_port);
|
||||
}
|
||||
|
||||
if (is_ipv4(conn->param.params.udp.dst_ip)) {
|
||||
struct sockaddr_in remote = {
|
||||
.sin_family = AF_INET,
|
||||
@@ -1465,4 +1474,9 @@ int is_ipv6(const char *ip)
|
||||
bool neu_conn_is_connected(neu_conn_t *conn)
|
||||
{
|
||||
return conn->is_connected;
|
||||
}
|
||||
|
||||
uint16_t neu_conn_udp_act_port(neu_conn_t *conn)
|
||||
{
|
||||
return conn->udp_act_port;
|
||||
}
|
||||
Reference in New Issue
Block a user