Figure 1: SSFNet BGP-4 DML schema excerpt
bgp_schema [

  ProtocolSession [
    name %S1!:bgp
    use  %S1!:SSF.OS.BGP4.BGPSession
    autoconfig %S<1:(true|false)

    connretry_time %I1!
    min_as_orig_time %I1!
    reflector %S<1:(true|false)
    neighbor %T:.bgp_schema.neighbor
  ]

  neighbor [
    as %S1!
    address %S1!
    use_return_address %S1!

    hold_time %I<1         # may be omitted if globally configured
    keep_alive_time %I<1   # may be omitted if globally configured
    mrai %I<1              # may be omitted if globally configured

    ibgp %S<1:(reflector|client)
      
    infilter  %T1!:.bgp_schema.policy.rule
    outfilter %T1!:.bgp_schema.policy.rule
  ]

  policy [

    # This feature has not yet been exercised as fully as most others, and
    # should be used with care.

    rule [
      clause %T:.bgp_schema.ProtocolSession.clause
    ]

    clause [
      precedence %I1!
      predicate %T1!:.bgp_schema.ProtocolSession.predicate
      action %T1!:.bgp_schema.ProtocolSession.action
    ]

    predicate [
      atom %T:.bgp_schema.ProtocolSession.atomic_predicate
    ]
  
    atomic_predicate [
      attribute %S1!:(nlri_ip|nlri_nhi|origin|as_path|nhi_path|next_hop_ip|next_hop_nhi|med|local_pref|atomic_agg|aggregator_ip|aggregator_nhi|communities|originator_id_ip|originator_id_nhi|cluster_list)
      matcher %S1!
    ]

    action [
      primary %S1!:(permit|deny)
      atom %T:.bgp_schema.ProtocolSession.atomic_action
    ]

    atomic_action [
      attribute %S1!:(origin|as_path|nhi_path|next_hop_ip|next_hop_nhi|med|local_pref|atomic_agg|aggregator_ip|aggregator_nhi|communities|originator_id_ip|originator_id_nhi|cluster_list)
      type %S1!:(set|append|prepend)
      value %S
    ]

  ]
]