code: func listFreeIPs(c context.Context, vlan int64, limit int32) ([]*crimson.IP, error) {
  	db := database.Get(c)
  	rows, err := db.QueryContext(c, `
  		SELECT ipv4
  		FROM ips
  		WHERE vlan_id = ? AND hostname_id IS NULL
  		LIMIT ?
  	`, vlan, limit)
  	if err != nil {
  		return nil, errors.Annotate(err, "failed to fetch IP addresses").Err()
  	}
  	defer rows.Close()
  
  	var ips []*crimson.IP
  	for rows.Next() {
  		ip := &crimson.IP{}
  		var ipv4 common.IPv4
  		if err = rows.Scan(&ipv4); err != nil {
  			return nil, errors.Annotate(err, "failed to fetch IP address").Err()
  		}
  		ip.Ipv4 = ipv4.String()
  		ip.Vlan = vlan
  		ips = append(ips, ip)
  	}
  	return ips, nil
  }
docs: // listFreeIPs returns a slice of free IP addresses in the database.