Included patch #5938: changed raw_pcb.protocol from u16_t to u8_t since for IPv4 and IPv6, proto is only 8 bits wide. This affects the api, as there, the protocol was u16_t, too.

This commit is contained in:
goldsimon 2007-05-22 07:31:06 +00:00
parent 980af63b8d
commit 81ac03a28b
7 changed files with 18 additions and 11 deletions

View File

@ -166,6 +166,12 @@ HISTORY
++ Bug fixes: ++ Bug fixes:
2007-05-22 Simon Goldschmidt
* api_lib.c, api_msg.c, raw.c, api.h, api_msg.h, raw.h: Included patch #5938:
changed raw_pcb.protocol from u16_t to u8_t since for IPv4 and IPv6, proto
is only 8 bits wide. This affects the api, as there, the protocol was
u16_t, too.
2007-05-18 Simon Goldschmidt 2007-05-18 Simon Goldschmidt
* memp.c: addition to patch #5913: smaller pointer was returned but * memp.c: addition to patch #5913: smaller pointer was returned but
memp_memory was the same size -> did not save memory. memp_memory was the same size -> did not save memory.

View File

@ -182,7 +182,7 @@ netbuf_copy_partial(struct netbuf *buf, void *dataptr, u16_t len, u16_t offset)
} }
struct struct
netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u16_t proto, netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto,
void (*callback)(struct netconn *, enum netconn_evt, u16_t len)) void (*callback)(struct netconn *, enum netconn_evt, u16_t len))
{ {
struct netconn *conn; struct netconn *conn;
@ -218,7 +218,7 @@ netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u16_t proto,
#endif /* LWIP_SO_RCVTIMEO */ #endif /* LWIP_SO_RCVTIMEO */
msg.function = do_newconn; msg.function = do_newconn;
msg.msg.msg.bc.port = proto; /* misusing the port field */ msg.msg.msg.raw_proto = proto;
msg.msg.conn = conn; msg.msg.conn = conn;
tcpip_apimsg(&msg); tcpip_apimsg(&msg);
@ -682,7 +682,7 @@ netconn_join_leave_group (struct netconn *conn,
msg.function = do_join_leave_group; msg.function = do_join_leave_group;
msg.msg.conn = conn; msg.msg.conn = conn;
msg.msg.msg.bc.ipaddr = (struct ip_addr *)ipaddr; msg.msg.msg.bc.ipaddr = (struct ip_addr *)ipaddr;
msg.msg.msg.bc.port = join_or_leave; msg.msg.msg.bc.port = join_or_leave; /* misusing the port field */
tcpip_apimsg(&msg); tcpip_apimsg(&msg);
return conn->err; return conn->err;
} }

View File

@ -293,7 +293,7 @@ pcb_new(struct api_msg_msg *msg)
switch(msg->conn->type) { switch(msg->conn->type) {
#if LWIP_RAW #if LWIP_RAW
case NETCONN_RAW: case NETCONN_RAW:
msg->conn->pcb.raw = raw_new(msg->msg.bc.port); /* misusing the port field */ msg->conn->pcb.raw = raw_new(msg->msg.raw_proto);
if(msg->conn->pcb.raw == NULL) { if(msg->conn->pcb.raw == NULL) {
msg->conn->err = ERR_MEM; msg->conn->err = ERR_MEM;
break; break;
@ -667,7 +667,7 @@ do_join_leave_group(struct api_msg_msg *msg)
case NETCONN_UDPLITE: case NETCONN_UDPLITE:
case NETCONN_UDPNOCHKSUM: case NETCONN_UDPNOCHKSUM:
case NETCONN_UDP: case NETCONN_UDP:
switch(msg->msg.bc.port){ switch(msg->msg.bc.port){ /* misusing the port field */
case NETCONN_JOIN: msg->conn->err = igmp_joingroup (netif_default, ((struct ip_addr**)(msg->msg.bc.ipaddr))[0]); break; case NETCONN_JOIN: msg->conn->err = igmp_joingroup (netif_default, ((struct ip_addr**)(msg->msg.bc.ipaddr))[0]); break;
case NETCONN_LEAVE: msg->conn->err = igmp_leavegroup(netif_default, ((struct ip_addr**)(msg->msg.bc.ipaddr))[0]); break; case NETCONN_LEAVE: msg->conn->err = igmp_leavegroup(netif_default, ((struct ip_addr**)(msg->msg.bc.ipaddr))[0]); break;
} }

View File

@ -310,7 +310,7 @@ raw_remove(struct raw_pcb *pcb)
* @see raw_remove() * @see raw_remove()
*/ */
struct raw_pcb * struct raw_pcb *
raw_new(u16_t proto) { raw_new(u8_t proto) {
struct raw_pcb *pcb; struct raw_pcb *pcb;
LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE | 3, ("raw_new\n")); LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE | 3, ("raw_new\n"));

View File

@ -143,7 +143,7 @@ struct
netconn *netconn_new_with_callback(enum netconn_type t, netconn *netconn_new_with_callback(enum netconn_type t,
void (*callback)(struct netconn *, enum netconn_evt, u16_t len)); void (*callback)(struct netconn *, enum netconn_evt, u16_t len));
struct struct
netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u16_t proto, netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto,
void (*callback)(struct netconn *, enum netconn_evt, u16_t len)); void (*callback)(struct netconn *, enum netconn_evt, u16_t len));
err_t netconn_delete (struct netconn *conn); err_t netconn_delete (struct netconn *conn);
enum netconn_type netconn_type (struct netconn *conn); enum netconn_type netconn_type (struct netconn *conn);

View File

@ -67,6 +67,7 @@ struct api_msg_msg {
} w; } w;
sys_mbox_t mbox; sys_mbox_t mbox;
u16_t len; u16_t len;
u8_t raw_proto;
} msg; } msg;
}; };

View File

@ -48,7 +48,7 @@ struct raw_pcb {
struct raw_pcb *next; struct raw_pcb *next;
u16_t protocol; u8_t protocol;
u8_t (* recv)(void *arg, struct raw_pcb *pcb, struct pbuf *p, u8_t (* recv)(void *arg, struct raw_pcb *pcb, struct pbuf *p,
struct ip_addr *addr); struct ip_addr *addr);
@ -57,7 +57,7 @@ struct raw_pcb {
/* The following functions is the application layer interface to the /* The following functions is the application layer interface to the
RAW code. */ RAW code. */
struct raw_pcb * raw_new (u16_t proto); struct raw_pcb * raw_new (u8_t proto);
void raw_remove (struct raw_pcb *pcb); void raw_remove (struct raw_pcb *pcb);
err_t raw_bind (struct raw_pcb *pcb, struct ip_addr *ipaddr); err_t raw_bind (struct raw_pcb *pcb, struct ip_addr *ipaddr);
err_t raw_connect (struct raw_pcb *pcb, struct ip_addr *ipaddr); err_t raw_connect (struct raw_pcb *pcb, struct ip_addr *ipaddr);
@ -67,11 +67,11 @@ void raw_recv (struct raw_pcb *pcb,
struct pbuf *p, struct pbuf *p,
struct ip_addr *addr), struct ip_addr *addr),
void *recv_arg); void *recv_arg);
err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr); err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr);
err_t raw_send (struct raw_pcb *pcb, struct pbuf *p); err_t raw_send (struct raw_pcb *pcb, struct pbuf *p);
/* The following functions are the lower layer interface to RAW. */ /* The following functions are the lower layer interface to RAW. */
u8_t raw_input (struct pbuf *p, struct netif *inp); u8_t raw_input (struct pbuf *p, struct netif *inp);
void raw_init (void); void raw_init (void);
#ifdef __cplusplus #ifdef __cplusplus