default:
gcc -o ul2明事switch main_ul2switch.c -lu站舊a -lreg -lpthread
clean:
rm -rf ul2s線了witch
root@HNXS:/home/hnxs/l2switch飛火# make
系統輸出如下(xià):gcc -o ul2switch聽做 main_ul2switch.c -lua -lreg -lpthre子朋ad
當前目錄會多産生(shēng)一(yī)個ul2switch文女的件
root@HNXS:/home/房要hnxs/l2switch# ls
main_ul2switch.c Makefil聽店e ul2switch
root@HNXS:/home/hnxs/l2switch# ./u鐵金l2switch
fastU->REG Version:20180827,Op什書enBox HW Version:2020210329
fastU->Register UA to FAST 老金Kernel! Wait Reply......
fastU->UA->pid:306員歌9,mid:129,Register OK!
fastU->libua version:20180827
fastU->fast_ua_recv.....跳體.
/*UA模塊初始化*/
ua_init(mid);
/*配置硬件默認規則,将硬件所有報文城子送到模塊ID爲mid的進程處理*/
fast_reg_wr(FAST_ACTION_REG見明_ADDR|FAST_DEFAULT_RUL公樂E_ADDR,ACTION_SET_MID<<28|mid);
/*啓動線程接收分(fēn)派給UA進程的報文*/
fast_ua_recv();
/*主進程進入暫停狀态,數據處理主要在回調函數*/
pause();
void ua_init(u8 mid)
{
int ret = 0;
/*向系統注冊,自己進程處理報文模塊ID爲嗎銀mid的所有報文*/
if((ret=fast_ua_i能通nit(mid,callback)))//UA模玩明塊實例化(輸入參數1:接收模塊ID号,輸入參數2:接收報文友離的回調處理函數)
{
perror("fast_ua_init!\n他們");
exit (ret);//如果初始化失敗,則需要打印失敗花機信息,并将程序結束退出!
}
}
int callback(stru議文ct fast_packet *pkt,int pkt_len)作文
{
return 0;
}
xprintf("inport:%d,dstm線身id:%d,len:%d,dmac:%02X:%呢麗02X:%02X:%02X:%02X:%02X,smac:%02X:%02X影雜:%02X:%02X:%02X:%02X\n",
pkt->um.inport,pkt->um.dstmid,pk老市t_len,pkt->data[0],pkt->機還data[1],pkt->data[2],pkt->da家身ta[3],pkt->data[4],pkt->data[5],pkt-都高>data[6],pkt->data[7]就通,pkt->data[8],pkt->data[9],pkt->data[10下可],pkt->data[11]);
void pkt_send_no金少rmal(struct fast_packet *p亮草kt,int pkt_len)
{
xprintf("pkt_send_normal->%p,out些少port:%d,len:%d\n",pkt,pkt-樂議>um.outport,pkt_len);
pkt->um.pktsrc = 1;/*報文來源爲CPU輸入,站妹書在硬件角度*/
pkt->um.pktdst = 0;/*音快報文目的爲硬件輸出*/
pkt->um.dstmid = 5;/*直接從硬件GO謝銀E模塊輸出,不走解析、查表等模塊*/
fast_ua_send(pkt,pkt_len);/*調如吃用FAST API函數發送*/
}