- int remove = 0;
-
- /* Remove us from bridge. If bridge is empty, remove it completely. */
- if (bridge->sunrise == port) {
- bridge->sunrise = NULL;
- if (!bridge->sunset)
- remove = 1;
- }
- if (bridge->sunset == port) {
- bridge->sunset = NULL;
- if (!bridge->sunrise)
- remove = 1;
+ struct port_bridge_member **memberp = &bridge->first, *member;
+
+ /* loop until we are found */
+ while(*memberp) {
+ if ((*memberp)->port == port) {
+ member = *memberp;
+ *memberp = member->next;
+ FREE(member, sizeof(struct port_bridge_member));
+ memuse--;
+ break;
+ }
+ memberp = &((*memberp)->next);