--- zzzz-none-000/linux-2.6.28.10/net/ipv6/af_inet6.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/net/ipv6/af_inet6.c 2011-10-27 15:46:53.000000000 +0000 @@ -618,6 +618,7 @@ ipv6_addr_copy(&fl.fl6_src, &np->saddr); fl.fl6_flowlabel = np->flow_label; fl.oif = sk->sk_bound_dev_if; + fl.mark = sk->sk_mark; fl.fl_ip_dport = inet->dport; fl.fl_ip_sport = inet->sport; security_sk_classify_flow(sk, &fl); @@ -786,12 +787,26 @@ static int __init ipv6_packet_init(void) { +#ifdef CONFIG_AVM_PA + { + struct avm_pa_pid_cfg cfg; + snprintf(cfg.name, sizeof(cfg.name), "ipv6"); + cfg.framing = avm_pa_framing_ptype; + cfg.default_mtu = 0xffff; + cfg.ptype = &ipv6_packet_type; + if(avm_pa_dev_pid_register(AVM_PA_PTYPE_DEVINFO(&ipv6_packet_type), &cfg) < 0) + printk(KERN_ERR "%s: failed to register PA PID\n", cfg.name); + } +#endif dev_add_pack(&ipv6_packet_type); return 0; } static void ipv6_packet_cleanup(void) { +#ifdef CONFIG_AVM_PA + avm_pa_dev_unregister(AVM_PA_PTYPE_DEVINFO(&ipv6_packet_type)); +#endif dev_remove_pack(&ipv6_packet_type); }