소켓 버퍼를 수정하기위해
기존의 UDP/IP에서 UDP를 제거 할려고 합니다...
ip_output과 ip_finish_output 사이에 함수를 하나를 만들어서..
int hh_len=(rt->u.dst.dev->hard_header_len + 15)&~15;
int len=sizeof(struct iphdr)+sizeof(struct udphdr)+hh_len;
int length=hh_len+ sizeof(struct iphhdr);
skb->nh.iph=iph;
struct sk_buff *skb2=skb_copy(skb,GFP_ATOMIC);
skb2->pkt_type = skb->pkt_type;
skb2->priority = skb->priority;
skb2->dst = dst_clone(skb->dst);
skb2->dev = skb->dev;
__skb_trim(skb,len);
skb=alloc_skb(length, GFP_ATOMIC);
skb_reserve(skb,hh_len);
skb->pkt_type =skb2->pkt_type;
skb->priority = skb2->priority;
skb->dst =skb2->dst;
skb->dev =skb2->dev;
이렇게 수정을 했는데, 제가 개념이 없어서요...
컴파일 할때는 에러가 없는데.......
부팅하고 확인할려면...프로그램들이 세그멘테이션 에러라구...
나오네요....제가 메모리를 잘못건들인것 같은데...
제가 skb_put과 trim를 잘못사용한것인지....
고수님들의 도움좀./.....