udhcpc6: fix port numbers used if !FEATURE_UDHCP_PORT
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
03b614739b
commit
04ac6e03c3
@ -311,8 +311,8 @@ static int d6_mcast_from_client_config_ifindex(struct d6_packet *packet, uint8_t
|
|||||||
|
|
||||||
return d6_send_raw_packet(
|
return d6_send_raw_packet(
|
||||||
packet, (end - (uint8_t*) packet),
|
packet, (end - (uint8_t*) packet),
|
||||||
/*src*/ NULL, CLIENT_PORT,
|
/*src*/ NULL, CLIENT_PORT6,
|
||||||
/*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT, MAC_BCAST_ADDR,
|
/*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT6, MAC_BCAST_ADDR,
|
||||||
client_config.ifindex
|
client_config.ifindex
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -554,8 +554,8 @@ static NOINLINE int send_d6_renew(uint32_t xid, struct in6_addr *server_ipv6, st
|
|||||||
if (server_ipv6)
|
if (server_ipv6)
|
||||||
return d6_send_kernel_packet(
|
return d6_send_kernel_packet(
|
||||||
&packet, (opt_ptr - (uint8_t*) &packet),
|
&packet, (opt_ptr - (uint8_t*) &packet),
|
||||||
our_cur_ipv6, CLIENT_PORT,
|
our_cur_ipv6, CLIENT_PORT6,
|
||||||
server_ipv6, SERVER_PORT
|
server_ipv6, SERVER_PORT6
|
||||||
);
|
);
|
||||||
return d6_mcast_from_client_config_ifindex(&packet, opt_ptr);
|
return d6_mcast_from_client_config_ifindex(&packet, opt_ptr);
|
||||||
}
|
}
|
||||||
@ -576,8 +576,8 @@ static int send_d6_release(struct in6_addr *server_ipv6, struct in6_addr *our_cu
|
|||||||
bb_info_msg("Sending release...");
|
bb_info_msg("Sending release...");
|
||||||
return d6_send_kernel_packet(
|
return d6_send_kernel_packet(
|
||||||
&packet, (opt_ptr - (uint8_t*) &packet),
|
&packet, (opt_ptr - (uint8_t*) &packet),
|
||||||
our_cur_ipv6, CLIENT_PORT,
|
our_cur_ipv6, CLIENT_PORT6,
|
||||||
server_ipv6, SERVER_PORT
|
server_ipv6, SERVER_PORT6
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ static NOINLINE int d6_recv_raw_packet(struct in6_addr *peer_ipv6
|
|||||||
/* make sure its the right packet for us, and that it passes sanity checks */
|
/* make sure its the right packet for us, and that it passes sanity checks */
|
||||||
if (packet.ip6.ip6_nxt != IPPROTO_UDP
|
if (packet.ip6.ip6_nxt != IPPROTO_UDP
|
||||||
|| (packet.ip6.ip6_vfc >> 4) != 6
|
|| (packet.ip6.ip6_vfc >> 4) != 6
|
||||||
|| packet.udp.dest != htons(CLIENT_PORT)
|
|| packet.udp.dest != htons(CLIENT_PORT6)
|
||||||
/* || bytes > (int) sizeof(packet) - can't happen */
|
/* || bytes > (int) sizeof(packet) - can't happen */
|
||||||
|| packet.udp.len != packet.ip6.ip6_plen
|
|| packet.udp.len != packet.ip6.ip6_plen
|
||||||
) {
|
) {
|
||||||
@ -708,7 +708,7 @@ static int d6_raw_socket(int ifindex)
|
|||||||
BPF_STMT(BPF_LDX|BPF_B|BPF_MSH, 0),
|
BPF_STMT(BPF_LDX|BPF_B|BPF_MSH, 0),
|
||||||
/* load udp destination port from halfword[header_len + 2] */
|
/* load udp destination port from halfword[header_len + 2] */
|
||||||
BPF_STMT(BPF_LD|BPF_H|BPF_IND, 2),
|
BPF_STMT(BPF_LD|BPF_H|BPF_IND, 2),
|
||||||
/* jump to L3 if udp dport is CLIENT_PORT, else to L4 */
|
/* jump to L3 if udp dport is CLIENT_PORT6, else to L4 */
|
||||||
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 68, 0, 1),
|
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 68, 0, 1),
|
||||||
/* L3: accept packet */
|
/* L3: accept packet */
|
||||||
BPF_STMT(BPF_RET|BPF_K, 0xffffffff),
|
BPF_STMT(BPF_RET|BPF_K, 0xffffffff),
|
||||||
@ -733,7 +733,7 @@ static int d6_raw_socket(int ifindex)
|
|||||||
xbind(fd, (struct sockaddr *) &sock, sizeof(sock));
|
xbind(fd, (struct sockaddr *) &sock, sizeof(sock));
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (CLIENT_PORT == 68) {
|
if (CLIENT_PORT6 == 546) {
|
||||||
/* Use only if standard port is in use */
|
/* Use only if standard port is in use */
|
||||||
/* Ignoring error (kernel may lack support for this) */
|
/* Ignoring error (kernel may lack support for this) */
|
||||||
if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog,
|
if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog,
|
||||||
@ -761,7 +761,7 @@ static void change_listen_mode(int new_mode)
|
|||||||
sockfd = -1;
|
sockfd = -1;
|
||||||
}
|
}
|
||||||
if (new_mode == LISTEN_KERNEL)
|
if (new_mode == LISTEN_KERNEL)
|
||||||
sockfd = udhcp_listen_socket(/*INADDR_ANY,*/ CLIENT_PORT, client_config.interface);
|
sockfd = udhcp_listen_socket(/*INADDR_ANY,*/ CLIENT_PORT6, client_config.interface);
|
||||||
else if (new_mode != LISTEN_NONE)
|
else if (new_mode != LISTEN_NONE)
|
||||||
sockfd = d6_raw_socket(client_config.ifindex);
|
sockfd = d6_raw_socket(client_config.ifindex);
|
||||||
/* else LISTEN_NONE: sockfd stays closed */
|
/* else LISTEN_NONE: sockfd stays closed */
|
||||||
@ -931,8 +931,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
|
|
||||||
/* Default options */
|
/* Default options */
|
||||||
IF_FEATURE_UDHCP_PORT(SERVER_PORT = 547;)
|
IF_FEATURE_UDHCP_PORT(SERVER_PORT6 = 547;)
|
||||||
IF_FEATURE_UDHCP_PORT(CLIENT_PORT = 546;)
|
IF_FEATURE_UDHCP_PORT(CLIENT_PORT6 = 546;)
|
||||||
client_config.interface = "eth0";
|
client_config.interface = "eth0";
|
||||||
client_config.script = CONFIG_UDHCPC_DEFAULT_SCRIPT;
|
client_config.script = CONFIG_UDHCPC_DEFAULT_SCRIPT;
|
||||||
|
|
||||||
@ -961,8 +961,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
}
|
}
|
||||||
#if ENABLE_FEATURE_UDHCP_PORT
|
#if ENABLE_FEATURE_UDHCP_PORT
|
||||||
if (opt & OPT_P) {
|
if (opt & OPT_P) {
|
||||||
CLIENT_PORT = xatou16(str_P);
|
CLIENT_PORT6 = xatou16(str_P);
|
||||||
SERVER_PORT = CLIENT_PORT - 1;
|
SERVER_PORT6 = CLIENT_PORT6 + 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
while (list_O) {
|
while (list_O) {
|
||||||
|
@ -29,9 +29,11 @@ struct client_config_t {
|
|||||||
#define client_config (*(struct client_config_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2]))
|
#define client_config (*(struct client_config_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2]))
|
||||||
|
|
||||||
#if ENABLE_FEATURE_UDHCP_PORT
|
#if ENABLE_FEATURE_UDHCP_PORT
|
||||||
#define CLIENT_PORT (client_config.port)
|
#define CLIENT_PORT (client_config.port)
|
||||||
|
#define CLIENT_PORT6 (client_config.port)
|
||||||
#else
|
#else
|
||||||
#define CLIENT_PORT 68
|
#define CLIENT_PORT 68
|
||||||
|
#define CLIENT_PORT6 546
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
POP_SAVED_FUNCTION_VISIBILITY
|
POP_SAVED_FUNCTION_VISIBILITY
|
||||||
|
@ -61,9 +61,11 @@ struct server_config_t {
|
|||||||
/* client_config sits in 2nd half of bb_common_bufsiz1 */
|
/* client_config sits in 2nd half of bb_common_bufsiz1 */
|
||||||
|
|
||||||
#if ENABLE_FEATURE_UDHCP_PORT
|
#if ENABLE_FEATURE_UDHCP_PORT
|
||||||
#define SERVER_PORT (server_config.port)
|
#define SERVER_PORT (server_config.port)
|
||||||
|
#define SERVER_PORT6 (server_config.port)
|
||||||
#else
|
#else
|
||||||
#define SERVER_PORT 67
|
#define SERVER_PORT 67
|
||||||
|
#define SERVER_PORT6 547
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user