Lines Matching refs:lrh
128 struct lowpan6_reass_helper *lrh = NULL;
132 lrh = lowpan6_data.reass_list;
133 while (lrh != NULL) {
134 lrh_temp = lrh->next_packet;
135 if (lrh->timer > 0) {
136 SET_TMR_TICK(tick, lrh->timer);
138 lrh = lrh_temp;
313 free_reass_datagram(struct lowpan6_reass_helper *lrh)
315 if (lrh->reass) {
316 pbuf_free(lrh->reass);
318 if (lrh->frags) {
319 pbuf_free(lrh->frags);
321 mem_free(lrh);
328 dequeue_datagram(struct lowpan6_reass_helper *lrh, struct lowpan6_reass_helper *prev)
330 if (lowpan6_data.reass_list == lrh) {
335 prev->next_packet = lrh->next_packet;
347 struct lowpan6_reass_helper *lrh, *lrh_next, *lrh_prev = NULL;
349 lrh = lowpan6_data.reass_list;
350 while (lrh != NULL) {
351 lrh_next = lrh->next_packet;
352 if ((--lrh->timer) == 0) {
353 dequeue_datagram(lrh, lrh_prev);
354 free_reass_datagram(lrh);
356 lrh_prev = lrh;
358 lrh = lrh_next;
678 struct lowpan6_reass_helper *lrh, *lrh_next, *lrh_prev = NULL;
705 lrh = lowpan6_data.reass_list;
706 while (lrh != NULL) {
708 lrh_next = lrh->next_packet;
709 if ((lrh->sender_addr.addr_len == src.addr_len) &&
710 (memcmp(lrh->sender_addr.addr, src.addr, src.addr_len) == 0)) {
712 if ((datagram_tag == lrh->datagram_tag) && (datagram_size == lrh->datagram_size)) {
721 dequeue_datagram(lrh, lrh_prev);
722 free_reass_datagram(lrh);
724 lrh_prev = lrh;
727 lrh = lrh_next;
732 lrh = (struct lowpan6_reass_helper *) mem_malloc(sizeof(struct lowpan6_reass_helper));
733 if (lrh == NULL) {
737 lrh->sender_addr.addr_len = src.addr_len;
739 lrh->sender_addr.addr[i] = src.addr[i];
741 lrh->datagram_size = datagram_size;
742 lrh->datagram_tag = datagram_tag;
743 lrh->frags = NULL;
747 lrh->reass = p;
749 lrh->reass = lowpan6_decompress(p, datagram_size, LWIP_6LOWPAN_CONTEXTS(netif), &src, &dest);
750 if (lrh->reass == NULL) {
752 mem_free(lrh);
757 lrh->next_packet = lowpan6_data.reass_list;
758 lrh->timer = 2;
759 lowpan6_data.reass_list = lrh;
769 for (lrh = lowpan6_data.reass_list; lrh != NULL; lrh_prev = lrh, lrh = lrh->next_packet) {
770 if ((lrh->sender_addr.addr_len == src.addr_len) &&
771 (memcmp(lrh->sender_addr.addr, src.addr, src.addr_len) == 0) &&
772 (datagram_tag == lrh->datagram_tag) &&
773 (datagram_size == lrh->datagram_size)) {
777 if (lrh == NULL) {
784 if (lrh->reass != NULL) {
786 if (datagram_offset < lrh->reass->len) {
788 dequeue_datagram(lrh, lrh_prev);
789 free_reass_datagram(lrh);
793 if (lrh->frags == NULL) {
795 lrh->frags = p;
800 for (q = lrh->frags, last = NULL; q != NULL; last = q, q = q->next) {
806 dequeue_datagram(lrh, lrh_prev);
807 free_reass_datagram(lrh);
815 dequeue_datagram(lrh, lrh_prev);
816 free_reass_datagram(lrh);
826 lrh->frags = p;
833 if (lrh->reass) {
834 u16_t offset = lrh->reass->len;
836 for (q = lrh->frags; q != NULL; q = q->next) {
846 u16_t datagram_left = datagram_size - lrh->reass->len;
847 for (q = lrh->frags; q != NULL; q = q->next) {
854 q = lrh->reass;
856 q->next = lrh->frags;
857 lrh->frags = NULL;
858 lrh->reass = NULL;
859 dequeue_datagram(lrh, lrh_prev);
860 mem_free(lrh);