12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include "uip_pbuf.h"
- #include "uip-conf.h"
- #include "rtdef.h"
- #include "uip.h"
- #include "uip_arp.h"
- #include "uip_netif.h"
- extern u16_t uip_len, uip_slen;
- void
- etharp_ip_input(struct netif *netif, struct pbuf *p)
- {
- u8_t *ptr;
- int i;
- ptr = p->payload;
- uip_len = p->len;
- for (i=0;i<p->len;i++) uip_buf[i] = ptr[i];
- uip_arp_ipin();
- uip_input();
- return;
- }
- void
- etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p)
- {
- u8_t *ptr,*pdata;
- //struct pbuf *q;
- int i;
- ptr = p->payload;
- uip_len = p->len;
- for (i=0;i<p->len;i++) uip_buf[i] = ptr[i];
- uip_arp_arpin(); //update arp table uip_arp_arpin
- if (uip_len)
- {
- if (( pdata =(u8_t*)rt_malloc(1500*sizeof(u8_t))) ==RT_NULL)
- {
- pbuf_free(p);
- return;
- }
- for (i=0; i < (UIP_LLH_LEN + 40); ++i)
- {
- pdata[i] = uip_buf[i];
- }
- for (; i < uip_len; ++i)
- {
- pdata[i] = uip_appdata[i - UIP_LLH_LEN - 40 ];
- }
- //q = p;
- p ->payload = pdata;
- p->len = uip_len;
- netif->linkoutput(netif,p);
- rt_free(pdata);
- pbuf_free(p);
- // pbuf_free(q);
- return ;
-
- // return 0; //ERR_OK
- }
- pbuf_free(p);
- }
|