# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

#instance=AH
#private.macaddr.start=00:16:3e:77:01:01
#private.ipaddr.start=192.168.166.128

#instance=KM
#private.macaddr.start=00:16:3e:77:02:01
#private.ipaddr.start=192.168.167.128

#instance=KY
#private.macaddr.start=00:16:3e:77:03:01
#private.ipaddr.start=192.168.168.128

#instance=WC
#private.macaddr.start=00:16:3e:77:04:01
#private.ipaddr.start=192.168.169.128

#instance=CV
#private.macaddr.start=00:16:3e:77:05:01
#private.ipaddr.start=192.168.170.128

#instance=KS
#private.macaddr.start=00:16:3e:77:06:01
#private.ipaddr.start=192.168.171.128

#instance=ES
#private.macaddr.start=00:16:3e:77:07:01
#private.ipaddr.start=192.168.172.128

#instance=RC
#private.macaddr.start=00:16:3e:77:08:01
#private.ipaddr.start=192.168.173.128

#instance=AX
#private.macaddr.start=00:16:3e:77:09:01
#private.ipaddr.start=192.168.174.128

private.macaddr.start=@private.macaddr.start@
private.ipaddr.start=@private.ipaddr.start@
