Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Oct 1995 15:16:31 +0900
From:      Masayuki Yanagiya (=?ISO-2022-JP?B?GyRCTHhDKxsoQg==?=   =?ISO-2022-JP?B?GyRCMm1HNxsoQg==?= ) <yanagiya@csl.ntt.jp>
To:        hackers@freebsd.org
Subject:   Multicast on 3com509
Message-ID:  <199510260616.PAA06734@khipx2-gate.csl.ntt.jp>

next in thread | raw e-mail | index | archive | help

Dear All,

I put multicast-capability on 3com509 by making very small
modification on i386/isa/if_ep.c. I checked the function by receiving
NASA shuttle Mission with vic-2.6. Also mrouted3.4 works on the card
correctly.

There are two modifications:

1. Add IFF_MULTICAST flag in epattach(),
2. Add SIOCADDMULTI and SIOCDELMULTI handling in epioctl().

I included the context-diff file at the end of this mail. 

Best regards,

Masayuki Yanagiya
---
Masayuki Yanagiya      NTT Communication Switching Laboratories
                  9-11, Midori-Cho 3-Chome Musashino-Shi, Tokyo 180 Japan
yanagiya@csl.ntt.jp   +81 422 59 4466   Fax +81 422 59 2473

--- cut here ---

*** if_ep.c.current	Thu Oct 26 14:23:13 1995
--- if_ep.c	Thu Oct 26 14:40:27 1995
***************
*** 50,55 ****
--- 50,61 ----
   *          babkin@hq.icb.chel.su
   */
  
+ /*
+     1995/10/26
+     Multicast-capability added.
+            Masayuki Yanagiya (NTT) yanagiya@csl.ntt.jp
+ */
+ 
  #include "ep.h"
  #if NEP > 0
  
***************
*** 424,429 ****
--- 430,436 ----
      ifp->if_name = "ep";
      ifp->if_mtu = ETHERMTU;
      ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
+     ifp->if_flags |= IFF_MULTICAST;
      ifp->if_init = epinit;
      ifp->if_output = ether_output;
      ifp->if_start = epstart;
***************
*** 1217,1223 ****
  			ifp->if_mtu = ifr->ifr_mtu;
  		}
  		break;
! 
        default:
  		error = EINVAL;
      }
--- 1224,1240 ----
  			ifp->if_mtu = ifr->ifr_mtu;
  		}
  		break;
!       case SIOCADDMULTI:
! 	error = ether_addmulti((struct ifreq *)data, &sc->arpcom);
! 	goto reset;
!       case SIOCDELMULTI:
! 	error = ether_delmulti((struct ifreq *)data, &sc->arpcom);
!       reset:
! 	if (error == ENETRESET) {
! 	  epinit(ifp->if_unit);
! 	  error = 0;
! 	}
! 	break;
        default:
  		error = EINVAL;
      }

--- cut here ---



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510260616.PAA06734>