Lines Matching refs:snap

769 	ipmp_snap_t	*snap;
774 snap = NULL;
778 retval = ipmp_snap_take(statep, &snap);
789 statep->st_snap = snap;
801 ipmp_snap_t *snap;
803 snap = malloc(sizeof (ipmp_snap_t));
804 if (snap == NULL)
807 snap->sn_grlistp = NULL;
808 snap->sn_grinfolistp = NULL;
809 snap->sn_ifinfolistp = NULL;
810 snap->sn_adinfolistp = NULL;
811 snap->sn_ngroup = 0;
812 snap->sn_nif = 0;
813 snap->sn_naddr = 0;
815 return (snap);
819 * Free all of the resources associated with snapshot `snap'.
822 ipmp_snap_free(ipmp_snap_t *snap)
828 ipmp_freegrouplist(snap->sn_grlistp);
830 for (grlp = snap->sn_grinfolistp; grlp != NULL; grlp = grnext) {
836 for (iflp = snap->sn_ifinfolistp; iflp != NULL; iflp = ifnext) {
842 for (adlp = snap->sn_adinfolistp; adlp != NULL; adlp = adnext) {
848 free(snap);
852 * Add the group information in `grinfop' to the snapshot named by `snap'.
856 ipmp_snap_addgroupinfo(ipmp_snap_t *snap, ipmp_groupinfo_t *grinfop)
864 if (ipmp_snap_getgroupinfo(snap, grinfop->gr_name) != NULL)
872 grlp->grl_next = snap->sn_grinfolistp;
873 snap->sn_grinfolistp = grlp;
874 snap->sn_ngroup++;
880 * Add the interface information in `ifinfop' to the snapshot named by `snap'.
884 ipmp_snap_addifinfo(ipmp_snap_t *snap, ipmp_ifinfo_t *ifinfop)
892 if (ipmp_snap_getifinfo(snap, ifinfop->if_name) != NULL)
900 iflp->ifl_next = snap->sn_ifinfolistp;
901 snap->sn_ifinfolistp = iflp;
902 snap->sn_nif++;
908 * Add the address information in `adinfop' to the snapshot named by `snap'.
912 ipmp_snap_addaddrinfo(ipmp_snap_t *snap, ipmp_addrinfo_t *adinfop)
919 if (ipmp_snap_getaddrinfo(snap, adinfop->ad_group,
928 adlp->adl_next = snap->sn_adinfolistp;
929 snap->sn_adinfolistp = adlp;
930 snap->sn_naddr++;
936 * Retrieve the information for the group `name' in snapshot `snap'.
940 ipmp_snap_getgroupinfo(ipmp_snap_t *snap, const char *name)
944 for (grlp = snap->sn_grinfolistp; grlp != NULL; grlp = grlp->grl_next) {
953 * Retrieve the information for the interface `name' in snapshot `snap'.
958 ipmp_snap_getifinfo(ipmp_snap_t *snap, const char *name)
962 for (iflp = snap->sn_ifinfolistp; iflp != NULL; iflp = iflp->ifl_next) {
972 * snapshot `snap'. Returns a pointer to the address information on success,
976 ipmp_snap_getaddrinfo(ipmp_snap_t *snap, const char *grname,
981 for (adlp = snap->sn_adinfolistp; adlp != NULL; adlp = adlp->adl_next) {
998 ipmp_snap_t *snap, *osnap;
1005 snap = ipmp_snap_create();
1006 if (snap == NULL)
1011 ipmp_snap_free(snap);
1017 ipmp_snap_free(snap);
1041 if (snap->sn_grlistp != NULL) {
1045 snap->sn_grlistp = infop;
1049 if (snap->sn_nif == osnap->sn_nif) {
1061 retval = ipmp_snap_addifinfo(snap, infop);
1069 if (snap->sn_naddr == osnap->sn_naddr) {
1074 retval = ipmp_snap_addaddrinfo(snap, infop);
1082 if (snap->sn_ngroup == osnap->sn_ngroup) {
1094 retval = ipmp_snap_addgroupinfo(snap, infop);
1109 ipmp_snap_free(snap);
1112 } while (snap->sn_grlistp == NULL || snap->sn_nif < osnap->sn_nif ||
1113 snap->sn_ngroup < osnap->sn_ngroup ||
1114 snap->sn_naddr < osnap->sn_naddr);
1117 *snapp = snap;