不定长buffer

wangqi0021
不定长buffer

在内核态如果需要一个不定长的buffer时候,大家一般怎么实现?全局buffer。用来存储skb。skb的个数是不定的



struct sk_buff *skb1

skb=kmalloc(sizeof(sk_buff));

memcpy(skb, data, sizeof(skb));

有没有什么技术可以实现当skb2到来时候,把skb1的空间扩大 再把skb2放进去  依此类推

[[i] 本帖最后由 wangqi0021 于 2008-6-27 14:13 编辑 [/i]]

net_robber
realloc,用户态

wangqi0021
[quote]原帖由 [i]net_robber[/i] 于 2008-6-27 14:45 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8686418&ptid=1182032][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
realloc,用户态 [/quote]

可是我要在内核态来用啊。如果分配的地址不是连续的,指针相加时候会不会出问题?

gaochang2008
回复 #1 wangqi0021 的帖子

SKB里面因该有指针指向下一个skb信息的吧,,skb 是个网卡收到数据包后已经申请的内存,,还需要从新申请马?

wangqi0021
[quote]原帖由 [i]gaochang2008[/i] 于 2008-6-27 15:05 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8686633&ptid=1182032][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
SKB里面因该有指针指向下一个skb信息的吧,,skb 是个网卡收到数据包后已经申请的内存,,还需要从新申请马? [/quote]


在内核态直接对原有skb操作是及其危险的行为,后果直接导致内核恐慌

wangqi0021
顶起来

flw2
[quote]原帖由 [i]wangqi0021[/i] 于 2008-6-27 14:04 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8685949&ptid=1182032][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
在内核态如果需要一个不定长的buffer时候,大家一般怎么实现?全局buffer。用来存储skb。skb的个数是不定的



struct sk_buff *skb1

skb=kmalloc(sizeof(sk_buff));

memcpy(skb, data, sizeof(skb)) ... [/quote]

skb你觉得是什么
合起来又是什么意思,不会是说ip重组吧

wangqi0021
[quote]原帖由 [i]flw2[/i] 于 2008-6-27 23:07 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8689816&ptid=1182032][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


skb你觉得是什么
合起来又是什么意思,不会是说ip重组吧 [/quote]

因为我要解析http的post和get 但是可能一个post不能把数据传完,会分成两个post,

就是说可能会这样  

post1:  nam

post2:  e

我要解析name就要有个buffer把post1的包和post2 的包连起来然后再解析,这样就需要一个buffer。把收到的skb暂时存在一个地方,等用户发完一个完整的post之后再一次性解析

wolf5729
应用层数据重组,在内核里做?这个不大合适吧?

我倒想着,在用户态以写文件的方式重组更好。

wangqi0021
[quote]原帖由 [i]wolf5729[/i] 于 2008-6-29 18:08 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8697477&ptid=1182032][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
应用层数据重组,在内核里做?这个不大合适吧?

我倒想着,在用户态以写文件的方式重组更好。 [/quote]

现在是想通过netfilter来实现,而且项目一开始就确定了。 好像不大好改吧。

Godbach
[quote]原帖由 [i]wangqi0021[/i] 于 2008-6-27 14:51 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8686487&ptid=1182032][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


可是我要在内核态来用啊。如果分配的地址不是连续的,指针相加时候会不会出问题? [/quote]

skb使用链表来操作的吧,为什么分配地址要连续呢

Godbach
回复 #10 wangqi0021 的帖子

LZ也在研究netfilter啊,好啊。有机会多交流。偶最近也在研究这个。