Hi,
I have worked out how to do multicast, i am posting the steps here for everyone to share.
1. in IPPORT.h
You need to turn on 3 defines.
# define IP_MULTICAST 1 // obvious one# define ETHMCAST 1 // give the readme.txt in ipmc directory, turn this one# define IGMP_V2 // This is not mentioned anywhere, i figured it out myself by reading the code
2. Do whatever you need to get it compiled. Eg undefine IN_MENUS, comment out codes that causes compilation errors. Appearently they are bunch of code relates to ipmc demostration, and they have no use at all. I would strongly recommend altera to remove them from being compiled in by default, they cause so much confusion.
3. define a dummy mcastlist()
nets[0]->n_mcastlist = this_mcastlist;
Giving the documentation it said, the idea is to have this done at the mac level.
And i am using tse, there is an option called multicast hash table which you can enable. But anyway, i am a pure software guy, i dont have much idea there.
But in my case, i did not turn on the option in tse (I tried to turn it on, but then my fpga would not compile, and i am not a hardware guy, i dont know how to fix it). I simply used a dummy mcastlist(), it works anyway.
That is all, multicast should work now.
BTW, if anyone knows how to detect ethernet cable disconnection, that'd be good. I looked around in TSE and Interniche code, it does not seem possible.