#include "circ.c"
#include "tcplib.c"
- void setSrcAddr(struct split_ip_msg *msg) {
- if (msg->hdr.ip6_dst.s6_addr16[0] == htons(0xff02) ||
- msg->hdr.ip6_dst.s6_addr16[0] == htons(0xfe80)) {
- call IPAddress.getLLAddr(&msg->hdr.ip6_src);
- } else {
- call IPAddress.getIPAddr(&msg->hdr.ip6_src);
- }
- }
-
struct tcplib_sock socks[uniqueCount("TCP_CLIENT")];
struct tcplib_sock *tcplib_accept(struct tcplib_sock *conn,
struct sockaddr_in6 *from) {
int cid = find_client(conn);
+ int buf_len;
printfUART("tcplib_accept: cid: %i\n", cid);
if (cid == N_CLIENTS) return NULL;
- if (signal Tcp.accept[cid](from, &conn->tx_buf, &conn->tx_buf_len)) {
+ if (signal Tcp.accept[cid](from, &conn->tx_buf, &buf_len)) {
if (conn->tx_buf == NULL) return NULL;
+ conn->tx_buf_len = buf_len;
return conn;
}
return NULL;
void tcplib_send_out(struct split_ip_msg *msg, struct tcp_hdr *tcph) {
printfUART("tcp output\n");
- setSrcAddr(msg);
+ call IPAddress.setSource(&msg->hdr);
tcph->chksum = htons(msg_cksum(msg, IANA_TCP));
call IP.send(msg);
}