#if UIP_RAW
for(c = 0; c < UIP_RAW_CONNS; ++c) {
- uip_raw_conns[c].proto = 0;
+ uip_raw_conns[c].proto = 255;
}
#endif /* UIP_RAW */
/* find an unused RAW connection */
conn = 0;
for(c = 0; c < UIP_RAW_CONNS; ++c) {
- if(uip_raw_conns[c].proto == 0) {
+ if(uip_raw_conns[c].proto == 255) {
conn = &uip_raw_conns[c];
break;
}
#if UIP_RAW
if(flag == UIP_RAW_TIMER) {
- if(uip_raw_conn->proto != 0) {
+ if(uip_raw_conn->proto != 255) {
uip_conn = NULL;
uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPH_LEN];
uip_len = uip_slen = 0;
for(uip_raw_conn = &uip_raw_conns[0];
uip_raw_conn < &uip_raw_conns[UIP_RAW_CONNS];
++uip_raw_conn){
- if(uip_raw_conn->proto != 0 &&
+ if(uip_raw_conn->proto != 255 &&
uip_raw_conn->proto == BUF->proto ){
uip_conn = NULL;
uip_flags = UIP_NEWDATA;
/* Support for RAW sockets here
* BMG
*
- * - all packets matching protocol go to socket/connection
- * - packets sent and received start at the protocol header (for now)
- *
+ * - received packets get duplicated and sent to each matching socket
+ * - on write: send just level 4 + header
+ * - on read: uip will send level 3 (ip) header
+ * - you can send but not receive UDP/TCP packets via raw socks
*/
struct uip_raw_conn {
uip_ipaddr_t ripaddr; /* IP address of remote peer */
uint8_t proto; /* IP protocol number */
- uint8_t ttl; /* defualt time-to-live */
+ uint8_t ttl; /* default time-to-live */
uip_raw_appstate_t appstate; /* application's state */
};
struct uip_raw_conn *
uip_raw_new(const uip_ipaddr_t *ripaddr, uint8_t proto);
-#define uip_raw_remove(conn) (conn)->proto = 0
+#define uip_raw_remove(conn) (conn)->proto = 255
#define uip_raw_send(len) uip_send((char *)uip_appdata, len)