diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-04-26 11:35:01 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-04-26 11:35:01 +0200 |
commit | 6a9ee3470814517e13e2b838dee4fcddae8d33e7 (patch) | |
tree | 5f4e38e88e877504a8688959697842439cf2c643 /quicktun.c | |
parent | 6162ae09c6a0f62eb687e3b6ddd9ab65e7cb0886 (diff) | |
download | modquicktun-6a9ee3470814517e13e2b838dee4fcddae8d33e7.tar modquicktun-6a9ee3470814517e13e2b838dee4fcddae8d33e7.zip |
Made new xmit function compatible to 2.6.39 kernels
Diffstat (limited to 'quicktun.c')
-rw-r--r-- | quicktun.c | 16 |
1 files changed, 4 insertions, 12 deletions
@@ -14,6 +14,7 @@ #include <net/sock.h> #include "quicktun.h" +#include "compat.h" #define DRV_NAME "quicktun" @@ -66,18 +67,9 @@ static netdev_tx_t quicktun_net_xmit(struct sk_buff *skb, struct net_device *dev remote_addr = rcu_dereference(tun->remote_address); if (likely(remote_addr->addr.sin_addr.s_addr)) { - struct flowi fl = { - .nl_u = { - .ip4_u = { - .saddr = tun->local_address.sin_addr.s_addr, - .daddr = remote_addr->addr.sin_addr.s_addr, - .tos = 0, - } - }, - .proto = IPPROTO_UDP - }; - - if (ip_route_output_key(dev_net(dev), &rt, &fl)) { + rt = ip_route_output_ports(dev_net(dev), NULL, remote_addr->addr.sin_addr.s_addr, tun->local_address.sin_addr.s_addr, + remote_addr->addr.sin_port, tun->local_address.sin_port, IPPROTO_UDP, 0, 0); + if (!rt) { tun->dev->stats.tx_carrier_errors++; goto error; } |