diff --git a/source/6LoWPAN/Thread/thread_management_if.c b/source/6LoWPAN/Thread/thread_management_if.c index 1d4a460004b..325c8a6a20e 100644 --- a/source/6LoWPAN/Thread/thread_management_if.c +++ b/source/6LoWPAN/Thread/thread_management_if.c @@ -606,7 +606,7 @@ int thread_management_get_ml_prefix_112(int8_t interface_id, uint8_t *prefix_ptr */ int thread_dhcpv6_server_add(int8_t interface_id, uint8_t *prefix_ptr, uint32_t max_client_cnt, bool stableData) { -#ifdef HAVE_DHCPV6_SERVER +#if defined(HAVE_THREAD) && defined(HAVE_DHCPV6_SERVER) protocol_interface_info_entry_t *cur; thread_prefix_tlv_t prefixTlv; thread_border_router_tlv_entry_t service; @@ -665,7 +665,7 @@ int thread_dhcpv6_server_add(int8_t interface_id, uint8_t *prefix_ptr, uint32_t int thread_dhcpv6_server_set_lifetime(int8_t interface_id, uint8_t *prefix_ptr, uint32_t valid_lifetime) { -#ifdef HAVE_DHCPV6_SERVER +#if defined(HAVE_THREAD) && defined(HAVE_DHCPV6_SERVER) if (!prefix_ptr) { return -1; } @@ -681,7 +681,7 @@ int thread_dhcpv6_server_set_lifetime(int8_t interface_id, uint8_t *prefix_ptr, int thread_dhcpv6_server_set_max_client(int8_t interface_id, uint8_t *prefix_ptr, uint32_t max_client_count) { -#ifdef HAVE_DHCPV6_SERVER +#if defined(HAVE_THREAD) && defined(HAVE_DHCPV6_SERVER) if (!prefix_ptr) { return -1; } @@ -697,7 +697,7 @@ int thread_dhcpv6_server_set_max_client(int8_t interface_id, uint8_t *prefix_ptr int thread_dhcpv6_server_set_anonymous_addressing(int8_t interface_id, uint8_t *prefix_ptr, bool anonymous) { -#ifdef HAVE_DHCPV6_SERVER +#if defined(HAVE_THREAD) && defined(HAVE_DHCPV6_SERVER) if (!prefix_ptr) { return -1; } @@ -715,7 +715,7 @@ int thread_dhcpv6_server_set_anonymous_addressing(int8_t interface_id, uint8_t * int thread_dhcpv6_server_delete(int8_t interface_id, uint8_t *prefix_ptr) { -#ifdef HAVE_DHCPV6_SERVER +#if defined(HAVE_THREAD) && defined(HAVE_DHCPV6_SERVER) uint8_t temp[16]; protocol_interface_info_entry_t *cur; thread_prefix_tlv_t prefixTlv; diff --git a/source/DHCPv6_client/dhcpv6_client_service.c b/source/DHCPv6_client/dhcpv6_client_service.c index 33ad2fc23d9..77346b0bcf2 100644 --- a/source/DHCPv6_client/dhcpv6_client_service.c +++ b/source/DHCPv6_client/dhcpv6_client_service.c @@ -23,7 +23,7 @@ #include "ns_list.h" #include "common_functions.h" - +#ifdef HAVE_DHCPV6 #include "dhcp_service_api.h" #include "dhcpv6_client_api.h" #include "libDHCPv6/libDHCPv6.h" @@ -144,7 +144,6 @@ int dhcp_solicit_resp_cb(uint16_t instance_id, void *ptr, uint8_t msg_name, uin srv_data_ptr->iaNontemporalAddress.validLifetime = dhcp_ia_non_temporal_params.validLifeTime; memcpy(srv_data_ptr->serverLinkId, serverId.linkID, 8); srv_data_ptr->serverLinkType = serverId.linkType; - srv_data_ptr->serverLinkType = serverId.linkType; srv_data_ptr->T0 = dhcp_ia_non_temporal_params.T0; srv_data_ptr->T1 = dhcp_ia_non_temporal_params.T1; srv_data_ptr->iaNonTemporalStructValid = true; @@ -335,3 +334,5 @@ void dhcpv6_client_set_address(int8_t interface_id, dhcpv6_client_server_data_t address_entry->state_timer = renewTimer; address_entry->cb = dhcpv6_renew; } + +#endif diff --git a/source/libDHCPv6/dhcp_service_api.c b/source/libDHCPv6/dhcp_service_api.c index 4eb68d260dd..c000b581e17 100644 --- a/source/libDHCPv6/dhcp_service_api.c +++ b/source/libDHCPv6/dhcp_service_api.c @@ -316,6 +316,7 @@ void recv_dhcp_server_msg(void *cb_res) memcpy(msg_tr_ptr->addr.address,relay_msg.peer_address , 16); msg_ptr = relay_msg.relay_options.msg_ptr; msg_len = relay_msg.relay_options.len; + msg_type = *msg_ptr; } else if (msg_type == DHCPV6_RELAY_REPLY) { @@ -383,7 +384,7 @@ void recv_dhcp_relay_msg(void *cb_res) msg_iov[0].iov_len = 34; msg_iov[1].iov_base = ns_dyn_mem_temporary_alloc(sckt_data->d_len); msg_iov[1].iov_len = sckt_data->d_len; - if (msg_iov[2].iov_base == NULL ) { + if (msg_iov[1].iov_base == NULL ) { // read actual message tr_error("Out of resources"); goto cleanup; @@ -426,7 +427,7 @@ void recv_dhcp_relay_msg(void *cb_res) //Copy DST address memcpy(src_address.address, relay_msg.peer_address, 16); src_address.type = ADDRESS_IPV6; - src_address.identifier = DHCPV6_SERVER_PORT; + src_address.identifier = DHCPV6_CLIENT_PORT; msghdr.msg_iov = &msg_iov[0]; msghdr.msg_iovlen = 1; msg_iov[0].iov_base = relay_msg.relay_options.msg_ptr; @@ -545,7 +546,7 @@ uint16_t dhcp_service_init(int8_t interface_id, dhcp_instance_type_e instance_ty if (dhcp_service->dhcp_server_socket >= 0) { tr_error("dhcp Relay agent can't open because server open already"); } - dhcp_service->dhcp_relay_socket = socket_open(SOCKET_UDP, DHCPV6_SERVER_PORT, recv_dhcp_server_msg); + dhcp_service->dhcp_relay_socket = socket_open(SOCKET_UDP, DHCPV6_SERVER_PORT, recv_dhcp_relay_msg); } if (instance_type == DHCP_INSTANCE_CLIENT && dhcp_service->dhcp_client_socket < 0) { @@ -654,7 +655,7 @@ void dhcp_service_delete(uint16_t instance) } } - if ((server_instances == 0 || relay_instances == 0) && dhcp_service->dhcp_server_socket > -1) { + if ((server_instances == 0 && relay_instances == 0) && dhcp_service->dhcp_server_socket > -1) { socket_close(dhcp_service->dhcp_server_socket); dhcp_service->dhcp_server_socket = -1; } diff --git a/source/libDHCPv6/libDHCPv6.c b/source/libDHCPv6/libDHCPv6.c index ceb7dc24f15..780d40afe8e 100644 --- a/source/libDHCPv6/libDHCPv6.c +++ b/source/libDHCPv6/libDHCPv6.c @@ -826,7 +826,7 @@ bool libdhcpv6_relay_msg_read(uint8_t *ptr, uint16_t length, dhcpv6_relay_msg_t relay_msg->peer_address = ptr + 16; ptr += 32; //Discover - if (libdhcpv6_message_option_discover(ptr, length - 34, DHCPV6_OPTION_RELAY, &relay_msg->relay_options) <= 0) { + if (libdhcpv6_message_option_discover(ptr, length - 34, DHCPV6_OPTION_RELAY, &relay_msg->relay_options) != 0) { return false; }