code: func (v *vserver) expandServices() map[serviceKey]*service {
  	if v.config.UseFWM {
  		return v.expandFWMServices()
  	}
  
  	svcs := make(map[serviceKey]*service)
  	for _, af := range seesaw.AFs() {
  		var ip net.IP
  		switch af {
  		case seesaw.IPv4:
  			ip = v.config.Host.IPv4Addr
  		case seesaw.IPv6:
  			ip = v.config.Host.IPv6Addr
  		}
  		if ip == nil {
  			continue
  		}
  		for _, entry := range v.config.Entries {
  			svc := &service{
  				serviceKey: serviceKey{
  					af:    af,
  					proto: entry.Proto,
  					port:  entry.Port,
  				},
  				ip:      seesaw.NewIP(ip),
  				ventry:  entry,
  				vserver: v,
  				dests:   make(map[destinationKey]*destination, 0),
  				stats:   &seesaw.ServiceStats{},
  			}
  			svc.ipvsSvc = svc.ipvsService()
  			svcs[svc.serviceKey] = svc
  		}
  	}
  	return svcs
  }
docs: // expandServices returns a list of services that have been expanded from the
  // vserver configuration.