Lines Matching refs:phyint

30  * Global list of phyints, phyint instances, phyint groups and the anonymous
33 struct phyint *phyints = NULL;
46 static void phyint_insert(struct phyint *pi, struct phyint_group *pg);
47 static void phyint_delete(struct phyint *pi);
48 static boolean_t phyint_is_usable(struct phyint *pi);
65 static int phyint_state_event(struct phyint_group *pg, struct phyint *pi);
68 static int phyint_group_member_event(struct phyint_group *pg, struct phyint *pi,
71 static int logint_upcount(struct phyint *pi);
88 /* Return the phyint with the given name */
89 struct phyint *
92 struct phyint *pi;
105 * Lookup a phyint in the group that has the same hardware address as `pi', or
110 static struct phyint *
111 phyint_lookup_hwaddr(struct phyint *pi, boolean_t online_only)
113 struct phyint *pi2;
141 * address changes for the phyint passed via `arg' by onlining or offlining
148 struct phyint *pi = arg;
149 struct phyint *oduppi = NULL, *duppi = NULL;
201 phyint_link_init(struct phyint *pi)
259 phyint_link_close(struct phyint *pi)
275 /* Return the phyint instance with the given name and the given family */
279 struct phyint *pi;
309 * Insert the phyint in the linked list of all phyints. If the phyint belongs
310 * to some group, insert it in the phyint group list.
313 phyint_insert(struct phyint *pi, struct phyint_group *pg)
318 /* Insert the phyint at the head of the 'all phyints' list */
326 * Insert the phyint at the head of the 'phyint_group members' list
327 * of the phyint group to which it belongs.
338 /* Refresh the group state now that this phyint has been added */
345 /* Insert the phyint instance in the linked list of all phyint instances. */
355 * Insert the phyint at the head of the 'all phyint instances' list.
365 * Create a new phyint with the given parameters. Also insert it into
366 * the list of all phyints and the list of phyint group members by calling
369 static struct phyint *
373 struct phyint *pi;
375 pi = calloc(1, sizeof (struct phyint));
382 * Record the phyint values.
407 * Insert the phyint in the list of all phyints, and the
408 * list of phyint group members
416 * Create a new phyint instance belonging to the phyint 'pi' and address
417 * family 'af'. Also insert it into the list of all phyint instances by
421 phyint_inst_create(struct phyint *pi, int af)
432 * Attach the phyint instance to the phyint.
449 /* Insert the phyint instance in the list of all phyint instances. */
455 * Change the state of phyint `pi' to state `state'.
458 phyint_chstate(struct phyint *pi, enum pi_state state)
462 * regardless of the previous state of the phyint (e.g., setting
478 phyint_changed(struct phyint *pi)
485 * Insert the phyint group in the linked list of all phyint groups
502 * Create a new phyint group called 'name'.
535 * Change the state of the phyint group `pg' to state `state'.
568 * consecutive unicast replies on any phyint.
588 * Create a new phyint instance and initialize it from the values supplied by
592 * pointer to the phyint instance on success
593 * NULL on failure Eg. if the phyint instance is not found in the kernel
603 struct phyint *pi;
644 * to create a new phyint.
656 * Get the phyint group name of this phyint, from the kernel.
668 * If the phyint is not part of any group, pg_name is the
670 * need to create a phyint.
692 * We need to create a new phyint instance. We may also need to
709 * Lookup the phyint. If the phyint does not exist create it.
716 " unable to create phyint %s\n", pi_name);
721 /* The phyint exists already. */
725 * IPv6 instances, for phyint properties. If we don't, it
751 * Create a new phyint instance, corresponding to the 'af'
757 "phyint inst %s\n", pi->pi_name);
765 * NOTE: the change_pif_flags() implementation requires a phyint
787 * If this a standby phyint, determine whether it should be
794 * If this phyint does not have a unique hardware address in its
838 * If the phyint is not part of a named group and track_all_phyints is
885 * the specified phyint only. Bind to the test address to ensure that
886 * the responses are sent to the specified phyint.
1009 * the specified phyint only. Bind to the test address to ensure that
1010 * the responses are sent to the specified phyint.
1094 * Remove the phyint group from the list of 'all phyint groups'
1110 * The phyint group must be empty, and must not have any phyints.
1111 * The phyint group must be in the list of all phyint groups
1142 struct phyint *pi, *usablepi;
1178 * first usable phyint is added to an empty group.
1193 * Extract information from the kernel about the desired phyint.
1194 * Look only for properties of the phyint and not properties of logints.
1198 * The phyint exists in the kernel and matches our knowledge
1199 * of the phyint.
1201 * The phyint has vanished in the kernel.
1203 * The phyint's interface index has changed.
1204 * Ask the caller to delete and recreate the phyint.
1208 * The phyint has changed group.
1215 struct phyint *pi;
1271 * If the phyint has changed group i.e. if the phyint group name
1273 * and recreate the phyint in the right group
1285 * Get the current phyint flags from the kernel, and determine what
1318 /* No change in phyint status */
1323 * Delete the phyint. Remove it from the list of all phyints, and the
1324 * list of phyint group members.
1327 phyint_delete(struct phyint *pi)
1330 struct phyint *pi2;
1336 /* Both IPv4 and IPv6 phyint instances must have been deleted. */
1340 * The phyint must belong to a group.
1344 /* The phyint must be in the list of all phyints */
1347 /* Remove the phyint from the phyint group list */
1352 /* Phyint is the 1st in the phyint group list */
1362 /* Refresh the group state now that this phyint has been removed */
1365 /* Remove the phyint from the global list of phyints */
1378 * See if another phyint in the group had been offlined because
1412 * Offline phyint `pi' if at least `minred' usable interfaces remain in the
1416 phyint_offline(struct phyint *pi, uint_t minred)
1420 struct phyint *pi2;
1458 * If we're offlining the phyint because it has a duplicate hardware
1472 * If this phyint was preventing another phyint with a duplicate
1495 phyint_undo_offline(struct phyint *pi)
1529 * whether the phyint should transition to running. Note that after
1551 * Delete (unlink and free), the phyint instance.
1556 struct phyint *pi = pii->pii_phyint;
1566 * If the phyint instance has associated probe targets
1573 * Delete all the logints associated with this phyint
1580 * Close the socket used to send probes to targets from this phyint.
1586 * Phyint instance must be in the list of all phyint instances.
1587 * Remove phyint instance from the global list of phyint instances.
1602 * Reset the phyint instance pointer in the phyint.
1603 * If this is the last phyint instance (being deleted) on this
1604 * phyint, then delete the phyint.
1689 * phyint instance.
1710 * phyint instance
1724 * Create a new named logint, on the specified phyint instance.
2045 * Target must be in the list of targets for this phyint
2231 struct phyint *pi;
2253 * add the target to this phyint instance only if it belongs to the
2327 * Change state to PI_RUNNING if this phyint instance is capable of
2329 * target, and this phyint instance is probe-capable. For more
2330 * details, see the phyint state diagram in mpd_probe.c.
2342 * Add the target address named by `addr' to phyint instance `pii' if it does
2372 * phyint instance
2406 * Target must be in the list of targets for this phyint
2413 * for this phyint.
2419 * phyint instance.
2495 * since we cannot probe this phyint any more. For more details,
2496 * please see phyint state diagram in mpd_probe.c.
2504 * Flush the target list of every phyint in the group, if the list
2513 struct phyint *pi;
2639 * Get the number of UP logints on phyint `pi'.
2642 logint_upcount(struct phyint *pi)
2665 * Get the phyint instance with the other (IPv4 / IPv6) protocol
2677 * Check whether a phyint is functioning.
2680 phyint_is_functioning(struct phyint *pi)
2688 * Check whether a phyint is usable.
2691 phyint_is_usable(struct phyint *pi)
2745 * Return the external IPMP state associated with phyint `pi'.
2748 ifstate(struct phyint *pi)
2775 * Return the external IPMP interface type associated with phyint `pi'.
2778 iftype(struct phyint *pi)
2787 * Return the external IPMP link state associated with phyint `pi'.
2790 iflinkstate(struct phyint *pi)
2799 * Return the external IPMP probe state associated with phyint `pi'.
2802 ifprobestate(struct phyint *pi)
2817 * Return the external IPMP target mode associated with phyint instance `pii'.
2831 * Return the external IPMP flags associated with phyint `pi'.
2834 ifflags(struct phyint *pi)
2851 * Store the test address used on phyint instance `pii' in `ssp'. If there's
2866 * Return the external IPMP group state associated with phyint group `pg'.
2908 * on phyint instance `pii'. Returns 0 on success, -1 on failure.
2988 * Generate an ESC_IPMP_GROUP_STATE sysevent for phyint group `pg'.
3022 * Generate an ESC_IPMP_GROUP_CHANGE sysevent of type `op' for phyint group
3061 * Generate an ESC_IPMP_GROUP_MEMBER_CHANGE sysevent for phyint `pi' in
3065 phyint_group_member_event(struct phyint_group *pg, struct phyint *pi,
3109 * Generate an ESC_IPMP_IF_CHANGE sysevent for phyint `pi' in group `pg'.
3113 phyint_state_event(struct phyint_group *pg, struct phyint *pi)
3178 struct phyint *pi;
3267 * Store the target information associated with phyint instance `pii' into a
3309 struct phyint *pi;
3423 struct phyint *pi;
3470 * Add information for each configured phyint.