From c1b2b10a06094c33a90644d15eef574cf3b596a8 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 1 Nov 2011 21:04:28 +0100 Subject: [PATCH] UDP bug fixes: after using TCP connection, socket was not deleted properly --- projects/tlayer/main.c | 60 +++++++++++------------ sys/net/destiny/socket.c | 81 ++++++++++++++------------------ sys/net/destiny/socket.h | 16 +++---- sys/net/destiny/tcp.c | 19 ++------ sys/net/destiny/tcp.h | 4 +- sys/net/destiny/udp.c | 8 ++-- sys/net/destiny/udp.h | 2 +- sys/net/sixlowpan/sixlowborder.c | 1 - sys/net/sixlowpan/sixlowip.c | 1 - 9 files changed, 85 insertions(+), 107 deletions(-) diff --git a/projects/tlayer/main.c b/projects/tlayer/main.c index d9d399d9f9..97f33341a6 100644 --- a/projects/tlayer/main.c +++ b/projects/tlayer/main.c @@ -34,7 +34,7 @@ char tcp_server_stack_buffer[TCP_STACK_SIZE]; uint8_t tcp_cht_pid; char tcp_cht_stack_buffer[TCP_STACK_SIZE]; -typedef struct tcp_message_t +typedef struct tcp_msg_t { int node_number; char tcp_string_msg[50]; @@ -49,42 +49,42 @@ void init_tl (char *str) void tcp_ch(void) { msg_t recv_msg; - struct sockaddr6 stSockAddr; + sockaddr6 stSockAddr; - msg_receive(&recv_msg); - - int SocketFD = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); - - if (-1 == SocketFD) + while (1) { - printf("cannot create socket"); - } + msg_receive(&recv_msg); - memset(&stSockAddr, 0, sizeof(stSockAddr)); + int SocketFD = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); + + if (-1 == SocketFD) + { + printf("cannot create socket"); + } + + memset(&stSockAddr, 0, sizeof(stSockAddr)); + + stSockAddr.sin6_family = AF_INET6; + stSockAddr.sin6_port = HTONS(1100); + ipv6_init_address(&stSockAddr.sin6_addr, 0xabcd, 0x0, 0x0, 0x0, 0x3612, 0x00ff, 0xfe00, current_message.node_number); + ipv6_print_addr(&stSockAddr.sin6_addr); + + if (-1 == connect(SocketFD, &stSockAddr, sizeof(stSockAddr), tcp_cht_pid)) + { + printf("connect failed"); + close(SocketFD); + } + + /* perform read write operations ... */ - stSockAddr.sin6_family = AF_INET6; - // TODO: use HTONS and NTOHL, here as well as in socket, udp and tcp api - stSockAddr.sin6_port = HTONS(1100); -// printf("SIN 6 PORT: %i %i\n", stSockAddr.sin6_port, NTOHS(stSockAddr.sin6_port)); - printf("Sending %s to node %i!\n", current_message.tcp_string_msg, current_message.node_number); - ipv6_init_address(&stSockAddr.sin6_addr, 0xabcd, 0x0, 0x0, 0x0, 0x3612, 0x00ff, 0xfe00, current_message.node_number); - ipv6_print_addr(&stSockAddr.sin6_addr); - if (-1 == connect(SocketFD, &stSockAddr, sizeof(stSockAddr), tcp_cht_pid)) - { - printf("connect failed"); close(SocketFD); } - - /* perform read write operations ... */ - - - close(SocketFD); } void init_udp_server(void) { - struct sockaddr6 sa; + sockaddr6 sa; char buffer_main[256]; ssize_t recsize; uint32_t fromlen; @@ -113,7 +113,7 @@ void init_udp_server(void) void init_tcp_server(void) { - struct sockaddr6 stSockAddr; + sockaddr6 stSockAddr; int SocketFD = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); if(-1 == SocketFD) @@ -272,8 +272,8 @@ void send_packet(char *str){ uint8_t text[20]; sscanf(str, "send %s", text); - struct ipv6_hdr_t *test_ipv6_header = ((struct ipv6_hdr_t*)(&send_buffer)); - struct udp_hdr_t *test_udp_header = ((struct udp_hdr_t*)(&send_buffer[IPV6_HDR_LEN])); + ipv6_hdr_t *test_ipv6_header = ((ipv6_hdr_t*)(&send_buffer)); + udp_hdr_t *test_udp_header = ((udp_hdr_t*)(&send_buffer[IPV6_HDR_LEN])); uint8_t *payload = &send_buffer[IPV6_HDR_LEN+UDP_HDR_LEN]; ipv6_addr_t ipaddr; @@ -305,7 +305,7 @@ void send_packet(char *str){ void send_udp(char *str) { int sock; - struct sockaddr6 sa; + sockaddr6 sa; ipv6_addr_t ipaddr; int bytes_sent; int address; diff --git a/sys/net/destiny/socket.c b/sys/net/destiny/socket.c index 88b3c11c3b..ff1f6e8762 100644 --- a/sys/net/destiny/socket.c +++ b/sys/net/destiny/socket.c @@ -45,14 +45,29 @@ void print_socket(uint8_t socket) current_socket->foreign_tcp_status.state); } +socket_internal_t *getSocket(uint8_t s) + { + if (exists_socket(s)) + { + return &(sockets[s-1]); + } + else + { + return NULL; + } + } + void print_sockets(void) { int i; printf("\n--- Socket list: ---\n"); for (i = 1; i < MAX_SOCKETS+1; i++) { - print_socket(i); - printf("\n----------------------------------------------------------------\n"); + if(getSocket(i) != NULL) + { + print_socket(i); + printf("\n----------------------------------------------------------------\n"); + } } } @@ -68,14 +83,6 @@ bool exists_socket(uint8_t socket) } } -socket_internal_t* getSocket(uint8_t s) - { - if (exists_socket(s)) - return &sockets[s-1]; - else - return NULL; - } - void close_socket(socket_t *current_socket) { memset(current_socket, 0, sizeof(current_socket)); @@ -105,7 +112,7 @@ bool isTCPSocket(uint8_t s) return false; } -int bind_udp_socket(int s, struct sockaddr6 *name, int namelen, uint8_t pid) +int bind_udp_socket(int s, sockaddr6 *name, int namelen, uint8_t pid) { int i; if (!exists_socket(s)) @@ -124,7 +131,7 @@ int bind_udp_socket(int s, struct sockaddr6 *name, int namelen, uint8_t pid) return 1; } -int bind_tcp_socket(int s, struct sockaddr6 *name, int namelen, uint8_t pid) +int bind_tcp_socket(int s, sockaddr6 *name, int namelen, uint8_t pid) { int i; if (!exists_socket(s)) @@ -156,7 +163,7 @@ int socket(int domain, int type, int protocol) } else { - struct socket_t *current_socket = &sockets[i-1].in_socket; + socket_t *current_socket = &sockets[i-1].in_socket; sockets[i-1].socket_id = i; current_socket->domain = domain; current_socket->type = type; @@ -233,9 +240,8 @@ uint16_t get_free_source_port(uint8_t protocol) return biggest_port + 1; } -int connect(int socket, struct sockaddr6 *addr, uint32_t addrlen, uint8_t tcp_client_thread) +int connect(int socket, sockaddr6 *addr, uint32_t addrlen, uint8_t tcp_client_thread) { - printf("------ PORT: %i\n", NTOHS(addr->sin6_port)); // Variables socket_t *current_tcp_socket; msg_t msg_from_server, msg_reply_fin; @@ -306,10 +312,9 @@ int connect(int socket, struct sockaddr6 *addr, uint32_t addrlen, uint8_t tcp_cl // wait for SYN ACK msg_receive(&msg_from_server); - printf("--4--\n"); // Read packet content - tcp_hdr_t *tcp_header = ((struct tcp_hdr_t*)(msg_from_server.content.ptr+IPV6_HDR_LEN)); + tcp_hdr_t *tcp_header = ((tcp_hdr_t*)(msg_from_server.content.ptr+IPV6_HDR_LEN)); // Got SYN ACK from Server // Refresh foreign TCP socket information @@ -354,19 +359,19 @@ int32_t recv(int s, void *buf, uint64_t len, int flags) return -1; } -int32_t recvfrom(int s, void *buf, uint64_t len, int flags, struct sockaddr6 *from, uint32_t *fromlen) +int32_t recvfrom(int s, void *buf, uint64_t len, int flags, sockaddr6 *from, uint32_t *fromlen) { if (isUDPSocket(s)) { msg_t m_recv, m_send; - struct ipv6_hdr_t *ipv6_header; - struct udp_hdr_t *udp_header; + ipv6_hdr_t *ipv6_header; + udp_hdr_t *udp_header; uint8_t *payload; uint16_t payload_size = 0; msg_receive(&m_recv); - ipv6_header = ((struct ipv6_hdr_t*)&buffer_udp); - udp_header = ((struct udp_hdr_t*)(&buffer_udp[IPV6_HDR_LEN])); + ipv6_header = ((ipv6_hdr_t*)&buffer_udp); + udp_header = ((udp_hdr_t*)(&buffer_udp[IPV6_HDR_LEN])); payload = &buffer_udp[IPV6_HDR_LEN+UDP_HDR_LEN]; memset(buf, 0, len); @@ -391,15 +396,14 @@ int32_t recvfrom(int s, void *buf, uint64_t len, int flags, struct sockaddr6 *fr } } -int32_t sendto(int s, void *msg, uint64_t len, int flags, struct sockaddr6 *to, uint32_t tolen) +int32_t sendto(int s, void *msg, uint64_t len, int flags, sockaddr6 *to, uint32_t tolen) { - printf("UDP SENDING, socket ID: %i, isUDPSOCKET: %i, sin6_port is 0: %i\n", getSocket(s)->socket_id, isUDPSocket(s), (getSocket(s)->in_socket.foreign_address.sin6_port == 0)); if (isUDPSocket(s) && (getSocket(s)->in_socket.foreign_address.sin6_port == 0)) { uint8_t send_buffer[BUFFER_SIZE]; - struct ipv6_hdr_t *temp_ipv6_header = ((ipv6_hdr_t*)(&send_buffer)); - struct udp_hdr_t *current_udp_packet = ((udp_hdr_t*)(&send_buffer[IPV6_HDR_LEN])); + ipv6_hdr_t *temp_ipv6_header = ((ipv6_hdr_t*)(&send_buffer)); + udp_hdr_t *current_udp_packet = ((udp_hdr_t*)(&send_buffer[IPV6_HDR_LEN])); uint8_t *payload = &send_buffer[IPV6_HDR_LEN+UDP_HDR_LEN]; ipv6_print_addr(&to->sin6_addr); @@ -435,7 +439,7 @@ int close(int s) if (current_socket != NULL) { // TODO: Kill connection, not just delete socket! - memset(current_socket, 0, sizeof(current_socket)); + memset(current_socket, 0, sizeof(socket_internal_t)); return 1; } @@ -445,7 +449,7 @@ int close(int s) } } -int bind(int s, struct sockaddr6 *name, int namelen, uint8_t pid) +int bind(int s, sockaddr6 *name, int namelen, uint8_t pid) { if (exists_socket(s)) { @@ -569,12 +573,9 @@ int handle_new_tcp_connection(socket_t *current_queued_socket, socket_internal_t // Fill SYN ACK TCP packet, still use queued socket for port number until connection is completely established! // Otherwise the program doesnt return to this function and instead trys to call the new registered thread // which isnt prepared to complete the threeway handshake process! -// printf("Queued Socket, foreign source port: %i\n", current_queued_socket->foreign_address.sin6_port); syn_ack_packet->ack_nr = current_queued_socket->local_tcp_status.seq_nr; syn_ack_packet->dataOffset_reserved = 0; syn_ack_packet->dst_port = current_queued_socket->foreign_address.sin6_port; -// printf("FOreign Address!\n"); -// ipv6_print_addr(¤t_queued_socket->foreign_address.sin6_addr); SET_TCP_SYN_ACK(syn_ack_packet->reserved_flags); syn_ack_packet->seq_nr = current_queued_socket->local_tcp_status.seq_nr; syn_ack_packet->src_port = server_socket->in_socket.local_address.sin6_port; @@ -609,16 +610,15 @@ int handle_new_tcp_connection(socket_t *current_queued_socket, socket_internal_t msg_reply(&msg_recv_client_ack, &msg_send_client_ack); new_socket = socket(current_queued_socket->domain, current_queued_socket->type, current_queued_socket->protocol); - printf("new Socket Data: ID: %i, Domain: %i, Type: %i, Protocol: %i\n", new_socket, current_queued_socket->domain, current_queued_socket->type, current_queued_socket->protocol); current_new_socket = getSocket(new_socket); current_new_socket->pid = pid; - memcpy(¤t_new_socket->in_socket, ¤t_queued_socket, sizeof(current_queued_socket)); + memcpy(¤t_new_socket->in_socket, ¤t_queued_socket, sizeof(socket_t)); close_socket(current_queued_socket); return new_socket; } -int accept(int s, struct sockaddr6 *addr, uint32_t addrlen, uint8_t pid) +int accept(int s, sockaddr6 *addr, uint32_t addrlen, uint8_t pid) { socket_internal_t *server_socket = getSocket(s); if (isTCPSocket(s) && (server_socket->in_socket.local_tcp_status.state == LISTEN)) @@ -673,21 +673,12 @@ socket_t *new_tcp_queued_socket(ipv6_hdr_t *ipv6_header, tcp_hdr_t *tcp_header, current_queued_socket->protocol = IPPROTO_TCP; // Foreign address - memcpy(¤t_queued_socket->foreign_address.sin6_addr, (void*) &ipv6_header->srcaddr, sizeof(ipv6_header->srcaddr)); -// printf("Foreign Addr1: "); -// ipv6_print_addr(&ipv6_header->srcaddr); -// printf("Foreign Addr2: "); -// ipv6_print_addr(¤t_queued_socket->foreign_address.sin6_addr); + memcpy(¤t_queued_socket->foreign_address.sin6_addr, (void*) &ipv6_header->srcaddr, sizeof(ipv6_addr_t)); current_queued_socket->foreign_address.sin6_family = AF_INET6; current_queued_socket->foreign_address.sin6_flowinfo = ipv6_header->flowlabel; current_queued_socket->foreign_address.sin6_port = tcp_header->src_port; -// printf("Source Port Foreign: %i\n", current_queued_socket->foreign_address.sin6_port); // Local address - memcpy(¤t_queued_socket->local_address.sin6_addr, (void*) &ipv6_header->destaddr, sizeof(ipv6_header->destaddr)); -// printf("Local Addr1: "); -// ipv6_print_addr(&ipv6_header->destaddr); -// printf("Local Addr2: "); -// ipv6_print_addr(¤t_queued_socket->local_address.sin6_addr); + memcpy(¤t_queued_socket->local_address.sin6_addr, (void*) &ipv6_header->destaddr, sizeof(ipv6_addr_t)); current_queued_socket->local_address.sin6_family = AF_INET6; current_queued_socket->local_address.sin6_flowinfo = 0; current_queued_socket->local_address.sin6_port = tcp_header->dst_port; diff --git a/sys/net/destiny/socket.h b/sys/net/destiny/socket.h index e0ee22db91..1404c78f41 100644 --- a/sys/net/destiny/socket.h +++ b/sys/net/destiny/socket.h @@ -110,7 +110,7 @@ #define EPHEMERAL_PORTS 49152 -typedef struct __attribute__ ((packed)) sockaddr6 +typedef struct __attribute__ ((packed)) socka6 { uint8_t sin6_family; /* AF_INET6 */ uint16_t sin6_port; /* transport layer port # */ @@ -118,7 +118,7 @@ typedef struct __attribute__ ((packed)) sockaddr6 ipv6_addr_t sin6_addr; /* IPv6 address */ } sockaddr6; -typedef struct __attribute__ ((packed)) socket_t +typedef struct __attribute__ ((packed)) sock_t { uint8_t domain; uint8_t type; @@ -129,7 +129,7 @@ typedef struct __attribute__ ((packed)) socket_t sockaddr6 foreign_address; } socket_t; -typedef struct __attribute__ ((packed)) socket_internal_t +typedef struct __attribute__ ((packed)) socket_in_t { uint8_t socket_id; uint8_t pid; @@ -140,16 +140,16 @@ typedef struct __attribute__ ((packed)) socket_internal_t socket_internal_t sockets[MAX_SOCKETS]; int socket(int domain, int type, int protocol); -int connect(int socket, struct sockaddr6 *addr, uint32_t addrlen, uint8_t tcp_client_thread); +int connect(int socket, sockaddr6 *addr, uint32_t addrlen, uint8_t tcp_client_thread); socket_t *getWaitingConnectionSocket(int socket); -int32_t recvfrom( int s, void *buf, uint64_t len, int flags, struct sockaddr6 *from, uint32_t *fromlen ); -int32_t sendto( int s, void *msg, uint64_t len, int flags, struct sockaddr6 *to, uint32_t tolen); +int32_t recvfrom( int s, void *buf, uint64_t len, int flags, sockaddr6 *from, uint32_t *fromlen ); +int32_t sendto( int s, void *msg, uint64_t len, int flags, sockaddr6 *to, uint32_t tolen); int32_t send(int s, void *msg, uint64_t len, int flags); int32_t recv(int s, void *buf, uint64_t len, int flags); int close(int s); -int bind(int s, struct sockaddr6 *name, int namelen, uint8_t pid); +int bind(int s, sockaddr6 *name, int namelen, uint8_t pid); int listen(int s, int backlog); -int accept(int s, struct sockaddr6 *addr, uint32_t addrlen, uint8_t pid); +int accept(int s, sockaddr6 *addr, uint32_t addrlen, uint8_t pid); int shutdown(int s , int how); void socket_init(void); socket_internal_t *get_udp_socket(ipv6_hdr_t *ipv6_header, udp_hdr_t *udp_header); diff --git a/sys/net/destiny/tcp.c b/sys/net/destiny/tcp.c index df7307483f..9ef8880f20 100644 --- a/sys/net/destiny/tcp.c +++ b/sys/net/destiny/tcp.c @@ -46,19 +46,16 @@ uint16_t tcp_csum(ipv6_hdr_t *ipv6_header, tcp_hdr_t *tcp_header) uint16_t len = ipv6_header->length; sum = len + IPPROTO_TCP; - printf("1sum: %i len: %i \n", sum, len); sum = csum(sum, (uint8_t *)&ipv6_header->srcaddr, 2 * sizeof(ipv6_addr_t)); - printf("2sum: %i \n", sum); sum = csum(sum, (uint8_t *)tcp_header, len); - printf("3sum: %i \n", sum); return (sum == 0) ? 0xffff : HTONS(sum); } void tcp_packet_handler (void) { msg_t m_recv_ip, m_send_ip, m_recv_tcp, m_send_tcp; - struct ipv6_hdr_t *ipv6_header; - struct tcp_hdr_t *tcp_header; + ipv6_hdr_t *ipv6_header; + tcp_hdr_t *tcp_header; uint8_t *payload; socket_internal_t *tcp_socket = NULL; uint16_t chksum; @@ -66,17 +63,14 @@ void tcp_packet_handler (void) while (1) { msg_receive(&m_recv_ip); - ipv6_header = ((struct ipv6_hdr_t*)&buffer_tcp); - tcp_header = ((struct tcp_hdr_t*)(&buffer_tcp[IPV6_HDR_LEN])); + ipv6_header = ((ipv6_hdr_t*)&buffer_tcp); + tcp_header = ((tcp_hdr_t*)(&buffer_tcp[IPV6_HDR_LEN])); payload = &buffer_tcp[IPV6_HDR_LEN+TCP_HDR_LEN]; - printf("IPv6 Length Field: %i\n", ipv6_header->length); prinTCPHeader(tcp_header); - //printArrayRange_tcp((uint8_t *) tcp_header, TCP_HDR_LEN); chksum = tcp_csum(ipv6_header, tcp_header); printf("Checksum is %x!\n", chksum); tcp_socket = get_tcp_socket(ipv6_header, tcp_header); - printf("TCP_SOCKET: %s\n",((tcp_socket == NULL)?"NULL":"FOUND")); if ((chksum == 0xffff) && (tcp_socket != NULL)) { @@ -111,11 +105,9 @@ void tcp_packet_handler (void) printf("SYN Bit set!\n"); if (tcp_socket->in_socket.local_tcp_status.state == LISTEN) { - printf("IN1\n"); socket_t *new_socket = new_tcp_queued_socket(ipv6_header, tcp_header, tcp_socket); if (new_socket != NULL) { - printf("IN2\n"); // notify socket function accept(..) that a new connection request has arrived // No need to wait for an answer because the server accept() function isnt reading from anything other than the queued sockets msg_send(&m_send_tcp, tcp_socket->pid, 0); @@ -134,14 +126,11 @@ void tcp_packet_handler (void) case TCP_SYN_ACK: { // only SYN and ACK Bit set, complete three way handshake when socket in state SYN_SENT - printf("--1--\n"); if (tcp_socket->in_socket.local_tcp_status.state == SYN_SENT) { - printf("--2-- PID: %i\n",tcp_socket->pid); m_send_tcp.content.ptr = (char*)buffer; m_send_tcp.content.value = IPV6_HDR_LEN + ipv6_header->length; msg_send_receive(&m_recv_tcp, &m_send_tcp, tcp_socket->pid); - printf("--3--\n"); } else { diff --git a/sys/net/destiny/tcp.h b/sys/net/destiny/tcp.h index cf8a84cc49..9033d05eba 100644 --- a/sys/net/destiny/tcp.h +++ b/sys/net/destiny/tcp.h @@ -58,7 +58,7 @@ enum tcp_states #include "sys/net/sixlowpan/sixlowip.h" -typedef struct __attribute__ ((packed)) tcp_socket_status_t +typedef struct __attribute__ ((packed)) tcp_so_sta_t { uint32_t ack_nr; uint32_t seq_nr; @@ -67,7 +67,7 @@ typedef struct __attribute__ ((packed)) tcp_socket_status_t uint8_t state; } tcp_socket_status_t; -typedef struct __attribute__ ((packed)) tcp_hdr_t +typedef struct __attribute__ ((packed)) tcp_h_t { uint16_t src_port; uint16_t dst_port; diff --git a/sys/net/destiny/udp.c b/sys/net/destiny/udp.c index a79595def4..6a594d1681 100644 --- a/sys/net/destiny/udp.c +++ b/sys/net/destiny/udp.c @@ -35,8 +35,8 @@ uint16_t udp_csum(ipv6_hdr_t *ipv6_header, udp_hdr_t *udp_header) void udp_packet_handler(void) { msg_t m_recv_ip, m_send_ip, m_recv_udp, m_send_udp; - struct ipv6_hdr_t *ipv6_header; - struct udp_hdr_t *udp_header; + ipv6_hdr_t *ipv6_header; + udp_hdr_t *udp_header; uint8_t *payload; socket_internal_t *udp_socket = NULL; uint16_t chksum; @@ -45,8 +45,8 @@ void udp_packet_handler(void) { msg_receive(&m_recv_ip); printf("Inside UDP handler!\n"); - ipv6_header = ((struct ipv6_hdr_t*)&buffer_udp); - udp_header = ((struct udp_hdr_t*)(&buffer_udp[IPV6_HDR_LEN])); + ipv6_header = ((ipv6_hdr_t*)&buffer_udp); + udp_header = ((udp_hdr_t*)(&buffer_udp[IPV6_HDR_LEN])); payload = &buffer_udp[IPV6_HDR_LEN+UDP_HDR_LEN]; chksum = udp_csum(ipv6_header, udp_header); diff --git a/sys/net/destiny/udp.h b/sys/net/destiny/udp.h index c7417f4308..7f70873520 100644 --- a/sys/net/destiny/udp.h +++ b/sys/net/destiny/udp.h @@ -16,7 +16,7 @@ #include "sys/net/sixlowpan/sixlowip.h" -typedef struct __attribute__ ((packed)) udp_hdr_t{ +typedef struct __attribute__ ((packed)) udp_h_t{ uint16_t src_port; uint16_t dst_port; uint16_t length; diff --git a/sys/net/sixlowpan/sixlowborder.c b/sys/net/sixlowpan/sixlowborder.c index f4d014b137..d50687d70d 100644 --- a/sys/net/sixlowpan/sixlowborder.c +++ b/sys/net/sixlowpan/sixlowborder.c @@ -62,7 +62,6 @@ void serial_reader_f(void) { while(1) { posix_open(uart0_handler_pid, 0); bytes = readpacket(get_serial_in_buffer(0), BORDER_BUFFER_SIZE); - printf("GOT PACKET FROM RS232!\n"); if (bytes < 0) { switch (bytes) { case (-SIXLOWERROR_ARRAYFULL):{ diff --git a/sys/net/sixlowpan/sixlowip.c b/sys/net/sixlowpan/sixlowip.c index be45ebcf87..de5d5c2c9b 100644 --- a/sys/net/sixlowpan/sixlowip.c +++ b/sys/net/sixlowpan/sixlowip.c @@ -131,7 +131,6 @@ void ipv6_process(void){ if (tcp_packet_handler_pid != 0) { - printf("IPV6 Header Length: %i\n", ipv6_buf->length); memcpy(tcp_packet_buffer, (char*) ipv6_buf, IPV6_HDR_LEN+ipv6_buf->length); msg_send_receive(&m_send, &m_recv, tcp_packet_handler_pid); }