# ========================================================================
#
# This is a sample bal_autostart.ini file.  If used, it must reside in 
# the same directory as the bcm_sdn_agent executable.  
#
# Examples for EPON ,GPON, XGPON1, and XGSPON systems are given below.  You cannot mix
# EPON / GPON / XGPON1 / XGSPON entries in this file.  Systems are assumed to be either
# EPON or GPON or XGPON1 or XGSPON (as determined by the entry for topology.pon_mode in
# the bal_config.ini file).  NGPON2 systems are not supported by the autostart feature
# or BAL code at this time.
#
# ========================================================================
# This is a sample autostart script for a MAPLE EPON system, 
# where ONUs are identified by their MAC address
#
# NOTE: This script is only useable on an SDN version
# of BAL, that is, with the bcm_sdn_agent.  
#
# On startup, the bcm_sdn_agent code reads this autostart file,
# then:
# - brings up the access-terminal
# - brings up each interface specified in the entry list
# - brings up a subscriber-terminal for each ONU entry
#
# ONU IDs can overlap on different PON interfaces
#
# Entry format for an EPON system is:
# onu=ONU ID, int=PON INTERFACE ID, mac=MAC ADDRESS OF THE ONU
# e.g.
# onu=3, int=2, mac=00:33:23:33:33:98
# ========================================================================
# 
# Uncomment-out entries below and modify them for your EPON system
#
#onu=1, int=0, mac=00:10:18:ad:69:d0
#onu=6, int=0, mac=00:10:18:ad:63:38
#onu=3, int=2, mac=00:10:18:ad:66:74
#onu=12, int=0, mac=00:10:18:ad:29:32
#onu=3, int=1, mac=00:10:18:ad:59:22
#onu=3, int=0, mac=00:10:18:ad:68:44



# ========================================================================
# This is a sample autostart script for a MAPLE GPON system, 
# where ONUs are identified by their password and serial number
#
# NOTE: This script is only useable on an SDN version
# of BAL, that is, with the bcm_sdn_agent  
#
# On startup, the bcm_sdn_agent code reads this autostart file,
# then:
# - brings up the access-terminal
# - brings up each interface specified in the entry list
# - brings up a subscriber-terminal for each ONU entry
#
# ONU IDs can overlap on different PON interfaces
#
# Entry format for an GPON system is:
# onu=ONU ID, int=PON INTERFACE ID, vend=VENDOR ID, pass=PASSWORD
# e.g.
# onu=3, int=2, vend=VENDOR ID FROM ONU LABEL, pass=ONU PASSWORD
#
# NOTE: If bcm_sdn_agent is started in autonoumous ONU activation mode (-O or --auto_activate command line option),
# vend and pass parameters should be set as 0. In this case, the system does not bring the
# subscriber terminal up. The subscriber terminal will be activated automatically when discovered. 
# Note that ONU entries with with vend & pass equal and not-equal 0 can be mixed. In this case,
# some subscriber terminals will be pre-configured, before they are discovered 
# ===================================================================
#
# Uncomment-out entries below and modify them for your GPON system
#
#onu=1, int=0, vend=4252434d01946121, pass=31323334353637383930
#onu=6, int=0, vend=4252434d01946132, pass=31323334353637383930
#
# Uncomment the entry below if bcm_sdn_agent is started in autonomous ONU 
# activation mode (-O or --auto_activate). The entry below will cause PON 
# interface 2 to be enabled. ONUs will be activated automatically when discovered
#
#onu=1, int=2, vend=00, pass=00


# ========================================================================
# This is a sample autostart script for a MAPLE XGPON1 or XGSPON system, 
# where ONUs are identified by their password and registration ID
#
# NOTE: This script is only useable on an SDN version
# of BAL, that is, with the bcm_sdn_agent  
#
# On startup, the bcm_sdn_agent code reads this autostart file,
# then:
# - brings up the access-terminal
# - brings up each interface specified in the entry list
# - brings up a subscriber-terminal for each ONU entry
#
# ONU IDs can overlap on different PON interfaces
#
# Entry format for an XGPON1 or XGSPON system is:
# onu=ONU ID, int=PON INTERFACE ID, vend=VENDOR ID, registration_id=REGISTRATION_ID
# e.g.
# onu=3, int=2, vend=VENDOR ID FROM ONU LABEL, registration_id=REGISTRATION_ID
# 
# As in case with GPON, bcm_sdn_agent controlling XGPON1 or XGSPON system can be started in autonomous
# ONU activation mode. In this case vend and registration_id should be set 0.
# The ONU will be activated automatically when discovered 
# ===================================================================
#
# Uncomment-out entries below and modify them for your XGPON1 or XGSPON system
#
#onu=1, int=0, vend=4252434d01946121, registration_id=202020202020202020202020202020202020202020202020202020202020202020202020
#onu=6, int=0, vend=4252434d01946132, registration_id=202020202020202020202020202020202020202020202020202020202020202020202020
#
# Uncomment the entry below if bcm_sdn_agent is started in autonomous ONU 
# activation mode (-O or --auto_activate). The entry below will cause PON 
# interface 2 to be enabled. ONUs will be activated automatically when discovered
#
#onu=1, int=2, vend=00, registration_id=00
