lwIP - A Lightweight TCP/IP stack - Bugs: bug #20503, IGMP Improvement
You are not allowed to post comments on this tracker with your current authentication level.
bug #20503: IGMP Improvement
Submitter: | Bill Florac <bflorac> | ||
Submitted: | Tue 17 Jul 2007 07:38:04 AM UTC | ||
Category: | IPv4 | Severity: | 3 - Normal |
Item Group: | Change Request | Status: | Fixed |
Privacy: | Public | Assigned to: | fbernon |
Open/Closed: | Closed | Planned Release: | None |
lwIP version: | None |
Jump to the original submission
Sat 15 Sep 2007 03:22:14 PM UTC, comment #15: |
Frédéric Bernon <fbernon> |
Sun 09 Sep 2007 08:48:54 PM UTC, comment #14: Ok, features of the comment #13 TODO list are check in( NETIF_FLAG_IGMP, igmp_stop, igmp reports when link "up").
|
Frédéric Bernon <fbernon> |
Tue 04 Sep 2007 03:35:28 PM UTC, comment #13: Replace mem_malloc call by memp_malloc, and use a new MEMP_NUM_IGMP_GROUP option (see opt.h to define the value). It will avoid potential fragmentation problems, use a counter to know how many times a group is used on an netif, and free it when all applications leave it. MEMP_NUM_IGMP_GROUP got 8 as default value (and init.c got a sanity check if LWIP_IGMP!=0).
|
Frédéric Bernon <fbernon> |
Mon 03 Sep 2007 02:54:46 PM UTC, comment #12: Some changes are check in: Initialize igmp_mac_filter to NULL in netif_add (this field should be set in the netif's "init" function). Use the "imr_interface" field (for socket layer) and/or the "interface" field (for netconn layer), for join/leave operations. The igmp_join/leavegroup first parameter change from a netif to an ipaddr. This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany).
|
Frédéric Bernon <fbernon> |
Wed 29 Aug 2007 09:14:16 PM UTC, comment #11: Ok, the igmp initialization changes are check in (see CHANGELOG). |
Frédéric Bernon <fbernon> |
Wed 29 Aug 2007 10:17:55 AM UTC, comment #10: A part of changes request by Bill are "postponed" to post-1.3.0. I think to :
|
Frédéric Bernon <fbernon> |
Wed 29 Aug 2007 09:12:29 AM UTC, comment #9: Is this done now? |
Kieran Mansley <kieranm> |
Thu 09 Aug 2007 06:40:34 PM UTC, comment #8: Since the patch doesn't change anything for users with LWIP_IGMP=0, then I have check in.
|
Frédéric Bernon <fbernon> |
Thu 09 Aug 2007 05:48:16 PM UTC, comment #7: Finally, since if LWIP_IGMP=0, the packet is dropped in ip_input, the code have to be conditionned by the same:
|
Frédéric Bernon <fbernon> |
Thu 09 Aug 2007 05:12:37 PM UTC, comment #6: Ok, the minor part of the patch is included. Bill, if you can check and confirm this part is good for you?
|
Frédéric Bernon <fbernon> |
Tue 17 Jul 2007 09:51:22 AM UTC, comment #5:
|
Frédéric Bernon <fbernon> |
Tue 17 Jul 2007 09:41:52 AM UTC, comment #4:
|
Bill Florac <bflorac> |
Tue 17 Jul 2007 09:26:40 AM UTC, comment #3: Additional comments:
bold*Reworked igmp.c to allow for different group list per interface. *bold [This required adding a igmp_group_list to the netif structure (netif.h). This is the suggested implementation according the RFC. This allows separate groups to be joined on each interface. Normally would join only on one interface and let the network manage getting it to other subnets.] bold*Reworked igmp.c so the debug reporting was formatted like other lwip files.*bold [I hope don't offended anyone.] bold*netif_add() now initializes igmp_mac_filter to NULL.*bold [The igmp code checks to see if this assigned before calling. A random value would cause problems if it was used before we got to point it to the correct function] bold*igmp_joingroup() now checks to make sure you only add multicast addresses to the list.*bold [Just to make sure we don't create invalid groups and send out invalid igmp reports.] bold*Added group_state member DEAD_MEMBER to separate groups that are being initialized to those that are stale.*bold [This allow correct building of hash key as we may don't delete records. The initial code did not delete group records after leaving a group. The routine to set the hash value for the MAC rebuilds by reading the entire list. I needed a way to determine the ones that should be removed from the hash.] bold*Removed igmp_mac_filter() to allrouters group.*bold [According to RFC-2236 we intentionally don't want our host to subscribe to this. If, at sometime in the future, we add router support, we can adjust as needed.] bold*In igmp_input(), changed igmp_lookup_group() to igmp_lookfor_group.*bold [This is a BUG! If it's not for us, we don't want it to make a group for us. List need to be managed by the application. This BUG also exists in ip.c] bold*igmp_leavegroup() can now delete memory used by the group. Use LWIP_IGMP_FREE_GROUPS to enable this feature.*bold [The application I'm working with may add and remove groups often. Over time, I cold run out of memory....] Bill (file #13372) |
Bill Florac <bflorac> |
Tue 17 Jul 2007 09:09:38 AM UTC, comment #2: Some of the changes can be done for 1.3.0, since there are bugs fix, or coding styles. I will check in them in a first step. For the others, they need more tests. I hope to find time for them in the end of the week, or next week... I take this bug (I can test it, of course, if there is no objection)...
Use LWIP_IGMP_FREE_GROUPS to enable this feature
|
Frédéric Bernon <fbernon> |
Tue 17 Jul 2007 07:58:48 AM UTC, comment #1: Here is my list of changes. Most of these were listed in previous emails.
|
Frédéric Bernon <fbernon> |
Tue 17 Jul 2007 07:38:04 AM UTC, original submission:
Attached is a improved IGMP implmention. Changes are listed in the igmp.c file. Fixes some bug, add some additionally function.
|
Bill Florac <bflorac> |
Depends on the following items: None found
Items that depend on this one: None found
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Follow 12 latest changes.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2007-09-15 | fbernon | Status | Ready For Test | Fixed | |
Open/Closed | Open | Closed | |||
2007-09-09 | fbernon | Planned Release | 1.3.0 | ||
2007-09-04 | fbernon | Status | None | Ready For Test | |
2007-07-26 | thedoctor | Carbon-Copy | - | Added thedoctor | |
2007-07-17 | bflorac | Attached File | - | Added netif.zip, #13372 | |
2007-07-17 | fbernon | Assigned to | None | fbernon | |
2007-07-17 | bflorac | Attached File | - | Added ip.c.patch, #13370 | |
2007-07-17 | bflorac | Attached File | - | Added igmp.c.patch, #13366 | |
Attached File | - | Added igmp.c, #13367 | |||
Attached File | - | Added igmp.h.patch, #13368 | |||
Attached File | - | Added igmp.h, #13369 |
Powered by Savane 3.13-02a9.
Corresponding source code
IP_MULTICAST_IF option is integrated and check in. For some documentation, you can see these links.
http://www.linux.com/base/ldp/howto/Multicast-HOWTO-6.html
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/gsocko.htm
Since it was the last feature to add, I close this task, but feel free to reopen it if I miss something.