From d4bc09e0027b30bc398536b6403917e5a1c58d1b Mon Sep 17 00:00:00 2001 From: Simon Duquennoy Date: Wed, 17 Oct 2018 23:33:02 +0200 Subject: [PATCH] Move function for clearing uip_buf to uipbuf module --- examples/slip-radio/slip-radio.c | 2 +- os/net/ipv6/multicast/esmrf.c | 4 ++-- os/net/ipv6/multicast/roll-tm.c | 2 +- os/net/ipv6/multicast/smrf.c | 2 +- os/net/ipv6/tcpip.c | 8 ++++---- os/net/ipv6/uip-icmp6.c | 8 ++++---- os/net/ipv6/uip-nd6.c | 14 ++++++------- os/net/ipv6/uip.h | 13 ------------ os/net/ipv6/uip6.c | 12 +++++------ os/net/ipv6/uipbuf.c | 9 +++++++++ os/net/ipv6/uipbuf.h | 5 +++++ os/net/routing/rpl-classic/rpl-icmp6.c | 20 +++++++++---------- os/net/routing/rpl-lite/rpl-icmp6.c | 8 ++++---- os/services/ip64/ip64-slip-interface.c | 6 +++--- .../rpl-border-router/embedded/slip-bridge.c | 8 ++++---- tools/sky/uip6-bridge/sicslow_ethernet.c | 12 +++++------ tools/sky/uip6-bridge/uip6-bridge-tap.c | 2 +- 17 files changed, 68 insertions(+), 67 deletions(-) diff --git a/examples/slip-radio/slip-radio.c b/examples/slip-radio/slip-radio.c index a20bd8676..84045e7e1 100644 --- a/examples/slip-radio/slip-radio.c +++ b/examples/slip-radio/slip-radio.c @@ -231,7 +231,7 @@ slip_input_callback(void) if(!cmd_input(&uip_buf[UIP_LLH_LEN], uip_len)) { cmd_send((uint8_t *)"EUnknown command", 16); } - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static void diff --git a/os/net/ipv6/multicast/esmrf.c b/os/net/ipv6/multicast/esmrf.c index 746f2f03b..b418d5322 100644 --- a/os/net/ipv6/multicast/esmrf.c +++ b/os/net/ipv6/multicast/esmrf.c @@ -244,7 +244,7 @@ icmp_input() /* If we enter here, we will definitely forward */ tcpip_ipv6_output(); } - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static void @@ -254,7 +254,7 @@ mcast_fwd(void *p) uip_len = mcast_len; UIP_IP_BUF->ttl--; tcpip_output(NULL); - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static uint8_t diff --git a/os/net/ipv6/multicast/roll-tm.c b/os/net/ipv6/multicast/roll-tm.c index c942dfd46..cc0b09ac2 100644 --- a/os/net/ipv6/multicast/roll-tm.c +++ b/os/net/ipv6/multicast/roll-tm.c @@ -1376,7 +1376,7 @@ out() drop: uip_slen = 0; - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static uint8_t diff --git a/os/net/ipv6/multicast/smrf.c b/os/net/ipv6/multicast/smrf.c index bb23b060b..c0e3bf0d0 100644 --- a/os/net/ipv6/multicast/smrf.c +++ b/os/net/ipv6/multicast/smrf.c @@ -84,7 +84,7 @@ mcast_fwd(void *p) uip_len = mcast_len; UIP_IP_BUF->ttl--; tcpip_output(NULL); - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static uint8_t diff --git a/os/net/ipv6/tcpip.c b/os/net/ipv6/tcpip.c index d78cae510..16176e6e2 100644 --- a/os/net/ipv6/tcpip.c +++ b/os/net/ipv6/tcpip.c @@ -125,7 +125,7 @@ tcpip_output(const uip_lladdr_t *a) return ret; } else { /* Ok, ignore and drop... */ - uip_clear_buf(); + uipbuf_clear(); return 0; } } @@ -448,7 +448,7 @@ tcpip_input(void) NETSTACK_IP_PROCESS) { process_post_synch(&tcpip_process, PACKET_INPUT, NULL); } /* else - do nothing and drop */ - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static void @@ -652,7 +652,7 @@ tcpip_ipv6_output(void) if(!NETSTACK_ROUTING.ext_header_update()) { /* Packet can not be forwarded */ LOG_ERR("output: routing protocol extension header update error\n"); - uip_clear_buf(); + uipbuf_clear(); return; } @@ -740,7 +740,7 @@ send_packet: } exit: - uip_clear_buf(); + uipbuf_clear(); return; } /*---------------------------------------------------------------------------*/ diff --git a/os/net/ipv6/uip-icmp6.c b/os/net/ipv6/uip-icmp6.c index c4003352f..a7e42c55c 100644 --- a/os/net/ipv6/uip-icmp6.c +++ b/os/net/ipv6/uip-icmp6.c @@ -156,7 +156,7 @@ uip_icmp6_error_output(uint8_t type, uint8_t code, uint32_t param) { /* check if originating packet is not an ICMP error */ uint16_t shift; if(uip_last_proto == UIP_PROTO_ICMP6 && UIP_ICMP_BUF->type < 128) { - uip_clear_buf(); + uipbuf_clear(); return; } @@ -185,7 +185,7 @@ uip_icmp6_error_output(uint8_t type, uint8_t code, uint32_t param) { /* the source should not be unspecified nor multicast, the check for multicast is done in uip_process */ if(uip_is_addr_unspecified(&UIP_IP_BUF->srcipaddr)){ - uip_clear_buf(); + uipbuf_clear(); return; } @@ -195,7 +195,7 @@ uip_icmp6_error_output(uint8_t type, uint8_t code, uint32_t param) { if(type == ICMP6_PARAM_PROB && code == ICMP6_PARAMPROB_OPTION){ uip_ds6_select_src(&UIP_IP_BUF->srcipaddr, &tmp_ipaddr); } else { - uip_clear_buf(); + uipbuf_clear(); return; } } else { @@ -286,7 +286,7 @@ echo_reply_input(void) } } - uip_clear_buf(); + uipbuf_clear(); return; } /*---------------------------------------------------------------------------*/ diff --git a/os/net/ipv6/uip-nd6.c b/os/net/ipv6/uip-nd6.c index 7728f2fe2..52e19eff5 100644 --- a/os/net/ipv6/uip-nd6.c +++ b/os/net/ipv6/uip-nd6.c @@ -314,7 +314,7 @@ create_na: #if UIP_CONF_ROUTER flags = flags | UIP_ND6_NA_FLAG_ROUTER; #endif - uip_clear_buf(); + uipbuf_clear(); UIP_IP_BUF->vtc = 0x60; UIP_IP_BUF->tcflow = 0; UIP_IP_BUF->flow = 0; @@ -348,7 +348,7 @@ create_na: return; discard: - uip_clear_buf(); + uipbuf_clear(); return; } #endif /* UIP_ND6_SEND_NA */ @@ -359,7 +359,7 @@ discard: void uip_nd6_ns_output(uip_ipaddr_t * src, uip_ipaddr_t * dest, uip_ipaddr_t * tgt) { - uip_clear_buf(); + uipbuf_clear(); UIP_IP_BUF->vtc = 0x60; UIP_IP_BUF->tcflow = 0; UIP_IP_BUF->flow = 0; @@ -388,7 +388,7 @@ uip_nd6_ns_output(uip_ipaddr_t * src, uip_ipaddr_t * dest, uip_ipaddr_t * tgt) } if (uip_is_addr_unspecified(&UIP_IP_BUF->srcipaddr)) { LOG_ERR("Dropping NS due to no suitable source address\n"); - uip_clear_buf(); + uipbuf_clear(); return; } UIP_IP_BUF->len[1] = @@ -595,7 +595,7 @@ na_input(void) #endif /*UIP_CONF_IPV6_QUEUE_PKT */ discard: - uip_clear_buf(); + uipbuf_clear(); return; } #endif /* UIP_ND6_SEND_NS */ @@ -691,7 +691,7 @@ rs_input(void) uip_ds6_send_ra_sollicited(); discard: - uip_clear_buf(); + uipbuf_clear(); return; } @@ -1082,7 +1082,7 @@ ra_input(void) #endif /*UIP_CONF_IPV6_QUEUE_PKT */ discard: - uip_clear_buf(); + uipbuf_clear(); return; } #endif /* !UIP_CONF_ROUTER */ diff --git a/os/net/ipv6/uip.h b/os/net/ipv6/uip.h index 49a7a0b21..9deedb726 100755 --- a/os/net/ipv6/uip.h +++ b/os/net/ipv6/uip.h @@ -1340,19 +1340,6 @@ extern uint8_t uip_last_proto; extern uint16_t uip_urglen, uip_surglen; #endif /* UIP_URGDATA > 0 */ -/* - * Clear uIP buffer - * - * This function clears the uIP buffer by reseting the uip_len and - * uip_ext_len pointers. - */ -#define uip_clear_buf() { \ - uip_len = 0; \ - uip_ext_len = 0; \ - uip_last_proto = 0; \ - uipbuf_clear_attr();\ -} - /** * Representation of a uIP TCP connection. * diff --git a/os/net/ipv6/uip6.c b/os/net/ipv6/uip6.c index 4ded21bdc..dce44552b 100644 --- a/os/net/ipv6/uip6.c +++ b/os/net/ipv6/uip6.c @@ -511,7 +511,7 @@ uip_remove_ext_hdr(void) uip_ext_len, uip_len); if(uip_len < UIP_IPH_LEN + uip_ext_len) { LOG_ERR("uip_len too short compared to ext len\n"); - uip_clear_buf(); + uipbuf_clear(); return; } last_uip_ext_len = uip_ext_len; @@ -802,7 +802,7 @@ uip_reass_over(void) * any RFC, we decided not to include it as it reduces the size of * the packet. */ - uip_clear_buf(); + uipbuf_clear(); memcpy(UIP_IP_BUF, FBUF, UIP_IPH_LEN); /* copy the header for src and dest address*/ uip_icmp6_error_output(ICMP6_TIME_EXCEEDED, ICMP6_TIME_EXCEED_REASSEMBLY, 0); @@ -948,7 +948,7 @@ uip_process(uint8_t flag) } else if(flag == UIP_TIMER) { /* Reset the length variables. */ #if UIP_TCP - uip_clear_buf(); + uipbuf_clear(); uip_slen = 0; /* Increase the initial sequence number. */ @@ -1473,7 +1473,7 @@ uip_process(uint8_t flag) LOG_ERR("Unknown ICMPv6 message type/code %d\n", UIP_ICMP_BUF->type); UIP_STAT(++uip_stat.icmp.drop); UIP_STAT(++uip_stat.icmp.typeerr); - uip_clear_buf(); + uipbuf_clear(); } if(uip_len > 0) { @@ -1989,7 +1989,7 @@ uip_process(uint8_t flag) uip_add_rcv_nxt(1); uip_flags = UIP_CONNECTED | UIP_NEWDATA; uip_connr->len = 0; - uip_clear_buf(); + uipbuf_clear(); uip_slen = 0; UIP_APPCALL(); goto appsend; @@ -2322,7 +2322,7 @@ uip_process(uint8_t flag) return; drop: - uip_clear_buf(); + uipbuf_clear(); uip_ext_bitmap = 0; uip_flags = 0; return; diff --git a/os/net/ipv6/uipbuf.c b/os/net/ipv6/uipbuf.c index efa2413e9..876385890 100644 --- a/os/net/ipv6/uipbuf.c +++ b/os/net/ipv6/uipbuf.c @@ -38,6 +38,15 @@ static uint16_t uipbuf_attrs[UIPBUF_ATTR_MAX]; +/*---------------------------------------------------------------------------*/ +void +uipbuf_clear(void) +{ + uip_len = 0; + uip_ext_len = 0; + uip_last_proto = 0; + uipbuf_clear_attr(); +} /*---------------------------------------------------------------------------*/ bool uipbuf_add_ext_hdr(int16_t len) diff --git a/os/net/ipv6/uipbuf.h b/os/net/ipv6/uipbuf.h index a2e091015..3ced3cd45 100644 --- a/os/net/ipv6/uipbuf.h +++ b/os/net/ipv6/uipbuf.h @@ -35,6 +35,11 @@ #include "contiki.h" +/** + * \brief Resets uIP buffer + */ +void uipbuf_clear(void); + /** * \brief Update uip buffer length for addition of an extension header * \param len The length of the new extension header diff --git a/os/net/routing/rpl-classic/rpl-icmp6.c b/os/net/routing/rpl-classic/rpl-icmp6.c index 5230ab4e4..baa6b08a7 100644 --- a/os/net/routing/rpl-classic/rpl-icmp6.c +++ b/os/net/routing/rpl-classic/rpl-icmp6.c @@ -248,7 +248,7 @@ dis_input(void) } } } - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void @@ -468,7 +468,7 @@ dio_input(void) rpl_process_dio(&from, &dio); discard: - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void @@ -807,7 +807,7 @@ dao_input_storing(void) /* independent if we remove or not - ACK the request */ if(flags & RPL_DAO_K_FLAG) { /* indicate that we accepted the no-path DAO */ - uip_clear_buf(); + uipbuf_clear(); dao_ack_output(instance, &dao_sender_addr, sequence, RPL_DAO_ACK_UNCONDITIONAL_ACCEPT); } @@ -897,7 +897,7 @@ fwd_dao: } if(should_ack) { LOG_DBG("Sending DAO ACK\n"); - uip_clear_buf(); + uipbuf_clear(); dao_ack_output(instance, &dao_sender_addr, sequence, RPL_DAO_ACK_UNCONDITIONAL_ACCEPT); } @@ -1011,7 +1011,7 @@ dao_input_nonstoring(void) if(flags & RPL_DAO_K_FLAG) { LOG_DBG("Sending DAO ACK\n"); - uip_clear_buf(); + uipbuf_clear(); dao_ack_output(instance, &dao_sender_addr, sequence, RPL_DAO_ACK_UNCONDITIONAL_ACCEPT); } @@ -1044,7 +1044,7 @@ dao_input(void) } discard: - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ #if RPL_WITH_DAO_ACK @@ -1283,7 +1283,7 @@ dao_ack_input(void) instance = rpl_get_instance(instance_id); if(instance == NULL) { - uip_clear_buf(); + uipbuf_clear(); return; } @@ -1291,7 +1291,7 @@ dao_ack_input(void) parent = rpl_find_parent(instance->current_dag, &UIP_IP_BUF->srcipaddr); if(parent == NULL) { /* not a known instance - drop the packet and ignore */ - uip_clear_buf(); + uipbuf_clear(); return; } } else { @@ -1300,7 +1300,7 @@ dao_ack_input(void) if(instance->current_dag->rank == ROOT_RANK(instance)) { LOG_DBG("DODAG root received a DAO ACK, ignoring it\n"); - uip_clear_buf(); + uipbuf_clear(); return; } @@ -1360,7 +1360,7 @@ dao_ack_input(void) } } #endif /* RPL_WITH_DAO_ACK */ - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void diff --git a/os/net/routing/rpl-lite/rpl-icmp6.c b/os/net/routing/rpl-lite/rpl-icmp6.c index 260f9b168..d376ff5e8 100644 --- a/os/net/routing/rpl-lite/rpl-icmp6.c +++ b/os/net/routing/rpl-lite/rpl-icmp6.c @@ -143,7 +143,7 @@ dis_input(void) rpl_process_dis(&UIP_IP_BUF->srcipaddr, uip_is_addr_mcast(&UIP_IP_BUF->destipaddr)); discard: - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void @@ -325,7 +325,7 @@ dio_input(void) rpl_process_dio(&from, &dio); discard: - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void @@ -536,7 +536,7 @@ dao_input(void) rpl_process_dao(&from, &dao); discard: - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void @@ -647,7 +647,7 @@ dao_ack_input(void) rpl_process_dao_ack(sequence, status); discard: - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ void diff --git a/os/services/ip64/ip64-slip-interface.c b/os/services/ip64/ip64-slip-interface.c index 665a342d9..209dfcb91 100644 --- a/os/services/ip64/ip64-slip-interface.c +++ b/os/services/ip64/ip64-slip-interface.c @@ -57,7 +57,7 @@ input_callback(void) /*PRINTF("SIN: %u\n", uip_len);*/ if(uip_buf[UIP_LLH_LEN] == '!') { PRINTF("Got configuration message of type %c\n", uip_buf[UIP_LLH_LEN + 1]); - uip_clear_buf(); + uipbuf_clear(); #if 0 if(uip_buf[UIP_LLH_LEN + 1] == 'P') { uip_ipaddr_t prefix; @@ -84,7 +84,7 @@ input_callback(void) uip_len = 18; slip_write(uip_buf, uip_len); } - uip_clear_buf(); + uipbuf_clear(); } else { /* Save the last sender received over SLIP to avoid bouncing the @@ -98,7 +98,7 @@ input_callback(void) uip_len = len; /* PRINTF("send len %d\n", len); */ } else { - uip_clear_buf(); + uipbuf_clear(); } } } diff --git a/os/services/rpl-border-router/embedded/slip-bridge.c b/os/services/rpl-border-router/embedded/slip-bridge.c index ff980ea69..6ce3f79fd 100644 --- a/os/services/rpl-border-router/embedded/slip-bridge.c +++ b/os/services/rpl-border-router/embedded/slip-bridge.c @@ -61,7 +61,7 @@ request_prefix(void) uip_buf[1] = 'P'; uip_len = 2; slip_write(uip_buf, uip_len); - uip_clear_buf(); + uipbuf_clear(); } /*---------------------------------------------------------------------------*/ static void @@ -77,14 +77,14 @@ slip_input_callback(void) memset(&prefix, 0, 16); memcpy(&prefix, &uip_buf[UIP_LLH_LEN + 2], 8); - uip_clear_buf(); + uipbuf_clear(); LOG_INFO("Setting prefix "); LOG_INFO_6ADDR(&prefix); LOG_INFO_("\n"); set_prefix_64(&prefix); } - uip_clear_buf(); + uipbuf_clear(); } else if(uip_buf[UIP_LLH_LEN] == '?') { LOG_INFO("Got request message of type %c\n", uip_buf[UIP_LLH_LEN + 1]); @@ -100,7 +100,7 @@ slip_input_callback(void) uip_len = 18; slip_write(uip_buf, uip_len); } - uip_clear_buf(); + uipbuf_clear(); } else { /* Save the last sender received over SLIP to avoid bouncing the packet back if no route is found */ diff --git a/tools/sky/uip6-bridge/sicslow_ethernet.c b/tools/sky/uip6-bridge/sicslow_ethernet.c index 5274a7833..4acd660ff 100644 --- a/tools/sky/uip6-bridge/sicslow_ethernet.c +++ b/tools/sky/uip6-bridge/sicslow_ethernet.c @@ -236,13 +236,13 @@ void mac_ethernetToLowpan(uint8_t * ethHeader) if (((struct uip_eth_hdr *) ethHeader)->type != UIP_HTONS(UIP_ETHTYPE_IPV6)) { PRINTF("eth2low: Packet is not IPv6, dropping\n"); /* rndis_stat.txbad++; */ - uip_clear_buf(); + uipbuf_clear(); return; } // In sniffer mode we don't ever send anything if (usbstick_mode.sendToRf == 0) { - uip_clear_buf(); + uipbuf_clear(); return; } @@ -261,7 +261,7 @@ void mac_ethernetToLowpan(uint8_t * ethHeader) /* IPv6 does not use broadcast addresses, hence this should not happen */ PRINTF("eth2low: Ethernet broadcast address received, should not happen?\n"); /* rndis_stat.txbad++; */ - uip_clear_buf(); + uipbuf_clear(); return; } else { PRINTF("eth2low: Addressed packet received... "); @@ -269,7 +269,7 @@ void mac_ethernetToLowpan(uint8_t * ethHeader) if (mac_createSicslowpanLongAddr( &(((struct uip_eth_hdr *) ethHeader)->dest.addr[0]), &destAddr) == 0) { PRINTF(" translation failed\n"); /* rndis_stat.txbad++; */ - uip_clear_buf(); + uipbuf_clear(); return; } PRINTF(" translated OK\n"); @@ -293,7 +293,7 @@ void mac_ethernetToLowpan(uint8_t * ethHeader) } } - uip_clear_buf(); + uipbuf_clear(); } @@ -341,7 +341,7 @@ void mac_LowpanToEthernet(void) /* rndis_send(uip_buf, uip_len, 1); */ /* rndis_stat.rxok++; */ -/* uip_clear_buf(); */ +/* uipbuf_clear(); */ } /** diff --git a/tools/sky/uip6-bridge/uip6-bridge-tap.c b/tools/sky/uip6-bridge/uip6-bridge-tap.c index 19ce22a6f..3386c2039 100644 --- a/tools/sky/uip6-bridge/uip6-bridge-tap.c +++ b/tools/sky/uip6-bridge/uip6-bridge-tap.c @@ -87,7 +87,7 @@ tcpip_input(void) if(uip_len > 0) { slip_write(uip_buf, uip_len); leds_toggle(LEDS_RED); - uip_clear_buf(); + uipbuf_clear(); } } }