Loránd Jakab wrote:
Hello,
I am working on implementing an experimental network protocol. I have
netfilter hook which changes the payload after the IP header and the
destination IP in packets with a certain protocol id. This part works.
For some packets, I need to generate an extra packet. To do this, I copy
the sk_buff, modify stuff on the copy and try sending it with
dev_queue_xmit(), then modify the original and return NF_ACCEPT. The
result is: the original get through (the one with NF_ACCEPT) but the
copy doesn't.
Here's the code for copying and sending the copy:
static void send_payload(struct sk_buff *skb, struct in_addr rloc)
{
struct iphdr *ipheader;
struct sk_buff *ccgen = skb_copy_expand(skb, 0, 0, GFP_ATOMIC);
if (!ccgen)
pr_debug("packet copy failed\n");
ipheader = ip_hdr(ccgen);
ipheader->protocol = 0xfd;
ip_send_check(ipheader);
/* Not sure if the next line is necessary */
ccgen->csum = csum_partial(ccgen->data, ccgen->len, 0);
if (dev_queue_xmit(ccgen) < 0)
pr_debug("failed to send payload\n");
}
I use skb_copy_expand to create the copy. I use the expand version,
because after I get this to work, I will have to add more payload to the
packet. First step is to change the protocol number and put the packet
on the wire.
What am I doing wrong? Why is the packet not sent?
Thanks in advance!
Regards,
Loránd Jakab
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ
Hi,
I don't have knowledge in the network driver side. but I will try,
- Check you have modified the iptables rules to let out all the packets,
make sure it is not blocking any packets.
- are you sure it is sending the packets to wire, then checkout the
ifconfig and see the packet counts of TX is incremented also look at
/proc/interrupts
- If the packets are out and the opposite machine is not showing the
packets then probably run the tcpdump in sender and receiver to watch
where the packet goes, this gives some clues where it gets dropped
--
Thanks & Regards,
H M Thalib.
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ