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

Lines Matching defs:inst

89 	struct nfulnl_instance *inst;
92 hlist_for_each_entry_rcu(inst, pos, head, hlist) {
93 if (inst->group_num == group_num)
94 return inst;
100 instance_get(struct nfulnl_instance *inst)
102 atomic_inc(&inst->use);
108 struct nfulnl_instance *inst;
111 inst = __instance_lookup(group_num);
112 if (inst && !atomic_inc_not_zero(&inst->use))
113 inst = NULL;
116 return inst;
126 instance_put(struct nfulnl_instance *inst)
128 if (inst && atomic_dec_and_test(&inst->use))
129 call_rcu_bh(&inst->rcu, nfulnl_instance_free_rcu);
137 struct nfulnl_instance *inst;
146 inst = kzalloc(sizeof(*inst), GFP_ATOMIC);
147 if (!inst) {
153 kfree(inst);
158 INIT_HLIST_NODE(&inst->hlist);
159 spin_lock_init(&inst->lock);
161 atomic_set(&inst->use, 2);
163 setup_timer(&inst->timer, nfulnl_timer, (unsigned long)inst);
165 inst->peer_pid = pid;
166 inst->group_num = group_num;
168 inst->qthreshold = NFULNL_QTHRESH_DEFAULT;
169 inst->flushtimeout = NFULNL_TIMEOUT_DEFAULT;
170 inst->nlbufsiz = NFULNL_NLBUFSIZ_DEFAULT;
171 inst->copy_mode = NFULNL_COPY_PACKET;
172 inst->copy_range = NFULNL_COPY_RANGE_MAX;
174 hlist_add_head_rcu(&inst->hlist,
179 return inst;
186 static void __nfulnl_flush(struct nfulnl_instance *inst);
190 __instance_destroy(struct nfulnl_instance *inst)
193 hlist_del_rcu(&inst->hlist);
197 spin_lock(&inst->lock);
200 inst->copy_mode = NFULNL_COPY_DISABLED;
202 if (inst->skb)
203 __nfulnl_flush(inst);
204 spin_unlock(&inst->lock);
207 instance_put(inst);
211 instance_destroy(struct nfulnl_instance *inst)
214 __instance_destroy(inst);
219 nfulnl_set_mode(struct nfulnl_instance *inst, u_int8_t mode,
224 spin_lock_bh(&inst->lock);
229 inst->copy_mode = mode;
230 inst->copy_range = 0;
234 inst->copy_mode = mode;
235 inst->copy_range = min_t(unsigned int,
244 spin_unlock_bh(&inst->lock);
250 nfulnl_set_nlbufsiz(struct nfulnl_instance *inst, u_int32_t nlbufsiz)
254 spin_lock_bh(&inst->lock);
260 inst->nlbufsiz = nlbufsiz;
263 spin_unlock_bh(&inst->lock);
269 nfulnl_set_timeout(struct nfulnl_instance *inst, u_int32_t timeout)
271 spin_lock_bh(&inst->lock);
272 inst->flushtimeout = timeout;
273 spin_unlock_bh(&inst->lock);
279 nfulnl_set_qthresh(struct nfulnl_instance *inst, u_int32_t qthresh)
281 spin_lock_bh(&inst->lock);
282 inst->qthreshold = qthresh;
283 spin_unlock_bh(&inst->lock);
289 nfulnl_set_flags(struct nfulnl_instance *inst, u_int16_t flags)
291 spin_lock_bh(&inst->lock);
292 inst->flags = flags;
293 spin_unlock_bh(&inst->lock);
328 __nfulnl_send(struct nfulnl_instance *inst)
332 if (inst->qlen > 1)
333 NLMSG_PUT(inst->skb, 0, 0,
337 status = nfnetlink_unicast(inst->skb, &init_net, inst->peer_pid,
340 inst->qlen = 0;
341 inst->skb = NULL;
348 __nfulnl_flush(struct nfulnl_instance *inst)
351 if (del_timer(&inst->timer))
352 instance_put(inst);
353 if (inst->skb)
354 __nfulnl_send(inst);
360 struct nfulnl_instance *inst = (struct nfulnl_instance *)data;
362 spin_lock_bh(&inst->lock);
363 if (inst->skb)
364 __nfulnl_send(inst);
365 spin_unlock_bh(&inst->lock);
366 instance_put(inst);
372 __build_packet_message(struct nfulnl_instance *inst,
386 sk_buff_data_t old_tail = inst->skb->tail;
388 nlh = NLMSG_PUT(inst->skb, 0, 0,
394 nfmsg->res_id = htons(inst->group_num);
399 NLA_PUT(inst->skb, NFULA_PACKET_HDR, sizeof(pmsg), &pmsg);
402 NLA_PUT(inst->skb, NFULA_PREFIX, plen, prefix);
406 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_INDEV,
413 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_PHYSINDEV,
417 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_INDEV,
422 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_INDEV,
425 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_PHYSINDEV,
434 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
441 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_PHYSOUTDEV,
445 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
450 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
453 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_PHYSOUTDEV,
460 NLA_PUT_BE32(inst->skb, NFULA_MARK, htonl(skb->mark));
467 NLA_PUT(inst->skb, NFULA_HWADDR, sizeof(phw), &phw);
472 NLA_PUT_BE16(inst->skb, NFULA_HWTYPE, htons(skb->dev->type));
473 NLA_PUT_BE16(inst->skb, NFULA_HWLEN,
475 NLA_PUT(inst->skb, NFULA_HWHEADER, skb->dev->hard_header_len,
485 NLA_PUT(inst->skb, NFULA_TIMESTAMP, sizeof(ts), &ts);
497 NLA_PUT_BE32(inst->skb, NFULA_UID, uid);
498 NLA_PUT_BE32(inst->skb, NFULA_GID, gid);
504 if (inst->flags & NFULNL_CFG_F_SEQ)
505 NLA_PUT_BE32(inst->skb, NFULA_SEQ, htonl(inst->seq++));
508 if (inst->flags & NFULNL_CFG_F_SEQ_GLOBAL)
509 NLA_PUT_BE32(inst->skb, NFULA_SEQ_GLOBAL,
516 if (skb_tailroom(inst->skb) < nla_total_size(data_len)) {
521 nla = (struct nlattr *)skb_put(inst->skb, nla_total_size(data_len));
529 nlh->nlmsg_len = inst->skb->tail - old_tail;
562 struct nfulnl_instance *inst;
572 inst = instance_lookup_get(li->u.ulog.group);
573 if (!inst)
601 spin_lock_bh(&inst->lock);
603 if (inst->flags & NFULNL_CFG_F_SEQ)
605 if (inst->flags & NFULNL_CFG_F_SEQ_GLOBAL)
608 qthreshold = inst->qthreshold;
615 switch (inst->copy_mode) {
622 if (inst->copy_range == 0
623 || inst->copy_range > skb->len)
626 data_len = inst->copy_range;
636 if (inst->skb &&
637 size > skb_tailroom(inst->skb) - sizeof(struct nfgenmsg)) {
640 __nfulnl_flush(inst);
643 if (!inst->skb) {
644 inst->skb = nfulnl_alloc_skb(inst->nlbufsiz, size);
645 if (!inst->skb)
649 inst->qlen++;
651 __build_packet_message(inst, skb, data_len, pf,
654 if (inst->qlen >= qthreshold)
655 __nfulnl_flush(inst);
656 /* timer_pending always called within inst->lock, so there
658 else if (!timer_pending(&inst->timer)) {
659 instance_get(inst);
660 inst->timer.expires = jiffies + (inst->flushtimeout*HZ/100);
661 add_timer(&inst->timer);
665 spin_unlock_bh(&inst->lock);
666 instance_put(inst);
687 struct nfulnl_instance *inst;
690 hlist_for_each_entry_safe(inst, tmp, t2, head, hlist) {
692 (n->pid == inst->peer_pid))
693 __instance_destroy(inst);
735 struct nfulnl_instance *inst;
753 inst = instance_lookup_get(group_num);
754 if (inst && inst->peer_pid != NETLINK_CB(skb).pid) {
762 if (inst) {
767 inst = instance_create(group_num,
769 if (IS_ERR(inst)) {
770 ret = PTR_ERR(inst);
775 if (!inst) {
780 instance_destroy(inst);
792 if (!inst) {
796 nfulnl_set_mode(inst, params->copy_mode,
803 if (!inst) {
807 nfulnl_set_timeout(inst, ntohl(timeout));
813 if (!inst) {
817 nfulnl_set_nlbufsiz(inst, ntohl(nlbufsiz));
823 if (!inst) {
827 nfulnl_set_qthresh(inst, ntohl(qthresh));
833 if (!inst) {
837 nfulnl_set_flags(inst, ntohs(flags));
841 instance_put(inst);
922 const struct nfulnl_instance *inst = v;
925 inst->group_num,
926 inst->peer_pid, inst->qlen,
927 inst->copy_mode, inst->copy_range,
928 inst->flushtimeout, atomic_read(&inst->use));