Lines Matching refs:pcomp

82 static void pktcompression_init(struct pktcompression* pcomp)
84 pcomp->alloc_now = 0;
85 pcomp->alloc_max = sizeof(pcomp->block);
86 pcomp->region = NULL;
87 pcomp->tree.root = RBTREE_NULL;
88 pcomp->tree.count = 0;
89 pcomp->tree.region = NULL;
90 pcomp->tree.cmp = &compression_cmp;
94 static void pktcompression_freeup(struct pktcompression* pcomp)
96 if(pcomp->region) {
97 region_destroy(pcomp->region);
98 pcomp->region = NULL;
100 pcomp->alloc_now = 0;
101 pcomp->tree.root = RBTREE_NULL;
102 pcomp->tree.count = 0;
106 static void* pktcompression_alloc(struct pktcompression* pcomp, size_t s)
109 * that is very fast and on the stack in the pcomp struct */
110 if(pcomp->alloc_now + s <= pcomp->alloc_max) {
111 void* ret = pcomp->block + pcomp->alloc_now;
112 pcomp->alloc_now += s;
118 if(!pcomp->region) {
119 pcomp->region = region_create(xalloc, free);
120 if(!pcomp->region)
123 return region_alloc(pcomp->region, s);
127 static uint16_t pktcompression_find(struct pktcompression* pcomp,
134 found = (struct rrcompress_entry*)rbtree_search(&pcomp->tree, &key);
141 static void pktcompression_insert(struct pktcompression* pcomp,
149 entry = pktcompression_alloc(pcomp, sizeof(*entry));
157 (void)rbtree_insert(&pcomp->tree, &entry->node);
161 static void pktcompression_insert_with_labels(struct pktcompression* pcomp,
172 pktcompression_insert(pcomp, dname, len, offset);
215 struct pktcompression* pcomp, const uint8_t* rr, size_t rrlen)
230 if((offset=pktcompression_find(pcomp, rr, dname_len))!=0) {
240 pktcompression_insert(pcomp, rr, dname_len,
264 struct pktcompression* pcomp, const uint8_t* rr, size_t rrlen,
293 dname_len = pktcompression_write_dname(packet, pcomp, rr, rrlen);
331 dname_len = pktcompression_write_dname(packet, pcomp,
671 struct pktcompression* pcomp)
682 if(ixfr_write_rr_pkt(query, query->packet, pcomp,
696 if(ixfr_write_rr_pkt(query, query->packet, pcomp,
711 if(rrlen && ixfr_write_rr_pkt(query, query->packet, pcomp,
727 if(rrlen && ixfr_write_rr_pkt(query, query->packet, pcomp,
744 struct pktcompression pcomp;
749 pktcompression_init(&pcomp);
858 pktcompression_insert_with_labels(&pcomp,
874 total_added = ixfr_copy_rrs_into_packet(query, &pcomp);
889 total_added += ixfr_copy_rrs_into_packet(query, &pcomp);
927 pktcompression_freeup(&pcomp);