• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/ipv6/netfilter/

Lines Matching refs:fq

118 static __inline__ void fq_put(struct nf_ct_frag6_queue *fq)
120 inet_frag_put(&fq->q, &nf_frags);
123 /* Kill fq entry. It is not destroyed immediately,
126 static __inline__ void fq_kill(struct nf_ct_frag6_queue *fq)
128 inet_frag_kill(&fq->q, &nf_frags);
140 struct nf_ct_frag6_queue *fq;
142 fq = container_of((struct inet_frag_queue *)data,
145 spin_lock(&fq->q.lock);
147 if (fq->q.last_in & INET_FRAG_COMPLETE)
150 fq_kill(fq);
153 spin_unlock(&fq->q.lock);
154 fq_put(fq);
187 static int nf_ct_frag6_queue(struct nf_ct_frag6_queue *fq, struct sk_buff *skb,
193 if (fq->q.last_in & INET_FRAG_COMPLETE) {
219 if (end < fq->q.len ||
220 ((fq->q.last_in & INET_FRAG_LAST_IN) && end != fq->q.len)) {
224 fq->q.last_in |= INET_FRAG_LAST_IN;
225 fq->q.len = end;
237 if (end > fq->q.len) {
239 if (fq->q.last_in & INET_FRAG_LAST_IN) {
243 fq->q.len = end;
264 prev = fq->q.fragments_tail;
270 for (next = fq->q.fragments; next != NULL; next = next->next) {
299 fq->q.fragments_tail = skb;
303 fq->q.fragments = skb;
306 fq->q.stamp = skb->tstamp;
307 fq->q.meat += skb->len;
314 fq->nhoffset = nhoff;
315 fq->q.last_in |= INET_FRAG_FIRST_IN;
318 list_move_tail(&fq->q.lru_list, &nf_init_frags.lru_list);
323 fq_kill(fq);
333 * It is called with locked fq, and caller must check that
338 nf_ct_frag6_reasm(struct nf_ct_frag6_queue *fq, struct net_device *dev)
340 struct sk_buff *fp, *op, *head = fq->q.fragments;
343 fq_kill(fq);
350 sizeof(struct ipv6hdr) + fq->q.len -
392 skb_network_header(head)[fq->nhoffset] = skb_transport_header(head)[0];
415 head->tstamp = fq->q.stamp;
424 fq->q.fragments = NULL;
425 fq->q.fragments_tail = NULL;
523 struct nf_ct_frag6_queue *fq;
558 fq = fq_find(fhdr->identification, user, &hdr->saddr, &hdr->daddr);
559 if (fq == NULL) {
564 spin_lock_bh(&fq->q.lock);
566 if (nf_ct_frag6_queue(fq, clone, fhdr, nhoff) < 0) {
567 spin_unlock_bh(&fq->q.lock);
569 fq_put(fq);
573 if (fq->q.last_in == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) &&
574 fq->q.meat == fq->q.len) {
575 ret_skb = nf_ct_frag6_reasm(fq, dev);
579 spin_unlock_bh(&fq->q.lock);
581 fq_put(fq);