-#if MROUTING
- case IP_MULTICAST_VIF: {
- int vifi;
- /*
- * Select a multicast VIF for transmission.
- * Only useful if multicast forwarding is active.
- */
- if (legal_vif_num == NULL) {
- error = EOPNOTSUPP;
- break;
- }
- error = sooptcopyin(sopt, &vifi, sizeof(int), sizeof(int));
- if (error)
- break;
- if (!legal_vif_num(vifi) && (vifi != -1)) {
- error = EINVAL;
- break;
- }
- imo = inp_findmoptions(inp);
- if (imo == NULL) {
- error = ENOMEM;
- break;
- }
- IMO_LOCK(imo);
- imo->imo_multicast_vif = vifi;
- IMO_UNLOCK(imo);
- IMO_REMREF(imo); /* from inp_findmoptions() */
- break;
- }
-#endif