Add Data to packet header

Denis Kirjanov kirjanov at gmail.com
Wed Jul 16 10:00:32 EDT 2014


CCing the list

On 7/16/14, Denis Kirjanov <kirjanov at gmail.com> wrote:
> On 7/16/14, Robert Clove <cloverobert at gmail.com> wrote:
>
> Please don't reply privately
>
>> skb is the new skb
>> and
>> size is the size of the variable that i will push in new header
>> For eg:
>>  struct my_head_struct {
>>       int a;
>>     };
>>  unsigned int hook_func(unsigned int hooknum,
>>                          struct sk_buff *skb,
>>                          const struct net_device *in,
>>                          const struct net_device *out,
>>                          int (*okfn)(struct sk_buff *))
>> {
>>
>> unsigned int length,truesize;
>> printk("Inside the hook function\n");
>>
>>
>> struct my_head_struct * my_head= NULL;
>>
>>     struct sk_buff *newskb;
>>     newskb = skb_copy_expand(skb, sizeof(struct my_head_struct), 0,
>> GFP_ATOMIC);
>>      if(newskb==NULL)
>>     {
>> printk("Failed to allocate mem\n");
>>         //return SEND_FAIL_MEMORY;
>>     }
>> else
>> {
>>    // /* need add check of newskb value for error control */
>>
>>     skb_push(newskb, sizeof(struct my_head_struct));
>
> my_head = (struct my_head_struct *) skb_push(skb, sizeof (*my_head));
> my_head->a = cpu_to_be32(<your be32 value>);
>
>>
>>   //  /* use network byte order */
>>    my_head->a = 21;  *//want to push this in new skb*
>>
>> }
>>         printk("Dropped packet on %s...\n", drop_if);
>>         return NF_ACCEPT;
>>     } else {
>>         return NF_ACCEPT;
>>     }
>> }
>>
>> Please guide on above
>>
>>
>> On Wed, Jul 16, 2014 at 4:57 PM, Denis Kirjanov <kirjanov at gmail.com>
>> wrote:
>>
>>> On 7/16/14, Robert Clove <cloverobert at gmail.com> wrote:
>>> > Hi All,
>>> >
>>> >
>>> > I want to add data to the packet header.
>>> >
>>> > I used the skb_copy_expand to make the copy of the skb and data.
>>> > Now in the headroom i want to add some data.
>>> > How can i do that,please suggest .
>>>
>>> __skb_push(skb, <your size>) to adjust the skb->data pointer
>>>
>>> >
>>> > Regards
>>> >
>>>
>>>
>>> --
>>> Regards,
>>> Denis
>>>
>>
>
>
> --
> Regards,
> Denis
>


-- 
Regards,
Denis



More information about the Kernelnewbies mailing list