427 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_PHYSOUTDEV,
428 htonl(outdev->ifindex));
429
430 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
431 htonl(outdev->br_port->br->dev->ifindex));
432 } else {
433
434
435 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
436 htonl(outdev->ifindex));
437 if (skb->nf_bridge && skb->nf_bridge->physoutdev)
438 NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_PHYSOUTDEV,
439 htonl(skb->nf_bridge->physoutdev->ifindex));
440 }
441#endif
442 }
443
444 if (skb->mark)
445 NLA_PUT_BE32(inst->skb, NFULA_MARK, htonl(skb->mark));
446
447 if (indev && skb->dev) {
448 struct nfulnl_msg_packet_hw phw;
449 int len = dev_parse_header(skb, phw.hw_addr);
450 if (len > 0) {
451 phw.hw_addrlen = htons(len);
452 NLA_PUT(inst->skb, NFULA_HWADDR, sizeof(phw), &phw);
453 }
454 }
455
456 if (indev && skb_mac_header_was_set(skb)) {
457 NLA_PUT_BE16(inst->skb, NFULA_HWTYPE, htons(skb->dev->type));
458 NLA_PUT_BE16(inst->skb, NFULA_HWLEN,
459 htons(skb->dev->hard_header_len));
460 NLA_PUT(inst->skb, NFULA_HWHEADER, skb->dev->hard_header_len,
461 skb_mac_header(skb));
462 }
463
464 if (skb->tstamp.tv64) {
465 struct nfulnl_msg_packet_timestamp ts;
466 struct timeval tv = ktime_to_timeval(skb->tstamp);
467 ts.sec = cpu_to_be64(tv.tv_sec);