原来我一直不能将帧发完全的主要原因还是出在M_BLK_ID pMblk上,muxSend要发送的数据是都用mBlk,但其中的成员比如pClBlk尤其需要注意,不能简单的将其填充为其他的值。
要使用muxSend()来发送数据只要步骤应该是这样的:首先用muxBind来绑定你要发送的设备,这里我是这样实现的:
muxBind (“motfec”, 0, (FUNCPTR)monitorSendProcess,NULL, NULL, NULL, MUX_PROTO_SNARF, “VLAN”, NULL);
绑定后应该对NetPool进行初始化操作,应为你要发送的数据mBlk需要从你的NetPool中申请。这一步有些麻烦,我是这样实现的:
变量声明:
NET_POOL_ID pNetPool = (NET_POOL_ID)calloc(1,sizeof(NET_POOL));
M_CL_CONFIG MclBlkConfig;
CL_DESC ClDescTbl;
int ClDescTblNumEnt;
具体实现:
ClDescTbl.clNum = 4;
MclBlkConfig.mBlkNum = ClDescTbl.clNum;
MclBlkConfig.clBlkNum = ClDescTbl.clNum;

//define the M_CL_CONFIG size
MclBlkConfig.memSize = (int)(
((unsigned int)MclBlkConfig.mBlkNum * ( MSIZE + sizeof ( long ))) +
((unsigned int)MclBlkConfig.clBlkNum * ( CL_BLK_SZ + sizeof (long)))
);
//allocate the memery size of M_CL_CONFIG
MclBlkConfig.memArea = (char *)memalign(sizeof (long ),(unsigned int)MclBlkConfig.memSize);
if (MclBlkConfig.memArea == NULL)
{
free( (char *)pNetPool);
//free((char *)pMblk);
return (ERROR);
}
//defin the CL_DESC size
ClDescTbl.memSize = (ClDescTbl.clNum * ( BUFSIZE + 8 ) ) + sizeof ( int ) ;

//allocate the memery size of CL_DESC
ClDescTbl.memArea = (char *) cacheDmaMalloc ( ( unsigned int ) ClDescTbl.memSize );
if ( ( int ) ClDescTbl.memArea == NULL )
{
perror ( “Error: Memory for buffers un**ailable” );
free ( ( char * ) MclBlkConfig.memArea );
free ( ( char * ) pNetPool );
//free((char *)pMblk);
return (ERROR);
}

//initial the netpool
if ( netPoolInit ( pNetPool, &MclBlkConfig, &ClDescTbl, ClDescTblNumEnt, NULL ) == ERROR )
{
perror ( “Error: Could not init buffers” );
free ( ( char * ) MclBlkConfig.memArea );
free ( ( char * ) ClDescTbl.memArea );
free ( ( char * ) pNetPool );
//free((char *)pMblk);
return (ERROR);

}

//apply for mBlk
pMblk = netMblkGet(pNetPool, M_DONTWAIT, MT_DATA);
这样就基本完成对NetPool的初始化了,并申请了你要发送的pMblk,接下来就是对pMblk指向的数据进行填充,如此这般后,就可以用muxSend发送你要的数据了!
最后,要注意对资源的释放!
free ( ( char * ) MclBlkConfig.memArea );
free ( ( char * ) ClDescTbl.memArea );
free ( ( char * ) pNetPool );
muxSendStop(“motfec”,0);

蒙古民族是个英勇的游牧民族,他们擅长打猎
  蒙古民歌<吉祥三宝>便是纪录一家三口出去打猎的情况:
  
  孩子:阿哇~
  父:哎~
  孩子:那啥子阿洞咕噜有味~ (闻味发现猎物住的洞穴|)
  父:噢沉默了股~ (咋没动静了呢?)
  孩子:那秃秃怎么咕噜有味~ (洞里的石头上有味道|)
  父:噢沉默了股~~ (咋没动静了呢?)
  孩子:阿窝记得咕噜有味~ (发现猎物的窝还有味道|)
  父:噢沉默了股~~ (咋没动静了呢?)
  齐声:咕噜咕噜一肾虎身煨~~~骷味~(抓住了一只虎合着昨天剩的一只腰子与骨头一
起煨|)[想像着美味的食物]
  
  孩子:妈妈~~(看来蒙古人就是强,打猎妇女也上)
  母:哎~
  孩子:那啥子阿洞咕噜有味~ (那洞里有味道)
  母:噢沉默了股~ (咋没动静了呢?)
  孩子:那秃秃怎么咕噜有味~ (洞里的石头上有味道|)
  母:噢沉默了股~~ (咋没动静了呢?)
  孩子:阿窝记得咕噜有味~ (发现猎物的窝还有味道|)
  母:噢沉默了股~~ (咋没动静了呢?)
  齐声:咕噜咕噜一肾虎身煨~~~骷味~(抓住了一只虎合着昨天剩的一只腰子与骨头一
起煨|)
  [唉....小孩子就是,同样的话要跟父母分别说,想吃虎肉炖汤也不用这样老念叨
吧...]
  
  父母:路玛~(小孩子的名字)
  孩子:啊~
  父母:那啥子阿洞咕噜有味~ (那洞真有味?你没闻错吧)
  孩子:莫愧~~~ (羞不羞愧啊,这么强烈的味道都闻不出来)
  父母:那次次的进么咕噜有味~ (是野兽们次次的进出留下的味?)
  孩子:有味~ (OK,就那味)
  父母:阿窝内的那个咕噜有味~ (窝里也是那许多野兽的味?)
  孩子:噢他妈的~~~ (小孩怒了,你们烦不烦啊~)
  齐声:咕噜咕噜一肾虎身煨~~~骷味~ (连忙说吃的哄小孩)
  父:哟哦哦哦哦哦~
  嘿嘿哦~~~ (开始学野兽叫,召唤野兽~)
  ......
  =============

HTTP://www.kazx.com.cn/bbs/UploadFile/yuwen/吉祥三宝.mp3