@@ -59,6 +59,7 @@ public override void Parse(string filename)
5959 ParseApplicationsAndGroups ( configNode ) ;
6060 parseSchedulers ( configNode ) ;
6161 ParsePolicy ( configNode ) ;
62+ ParsePolicyFromGroups ( configNode ) ;
6263 ParseNat ( configNode ) ;
6364 AttachRoutesToInterfacesTopology ( ) ;
6465 }
@@ -448,6 +449,44 @@ private void ParsePolicy(XElement configNode)
448449 _juniperGlobalPolicyRules . Add ( juniperDefaultActionRule ) ;
449450 }
450451
452+ private void ParsePolicyFromGroups ( XElement configNode )
453+ {
454+ var zonePolicies = configNode . XPathSelectElements ( "./groups/security/policies/policy" ) ;
455+ foreach ( var zonePolicy in zonePolicies )
456+ {
457+ JuniperObject juniperZonePolicy = new Juniper_ZonePolicy ( ) ;
458+ juniperZonePolicy . Parse ( zonePolicy , null ) ;
459+ _juniperObjects . Add ( juniperZonePolicy ) ;
460+
461+ var policies = zonePolicy . Elements ( "policy" ) ;
462+ foreach ( var policy in policies )
463+ {
464+ var juniperRule = new Juniper_PolicyRule ( ) ;
465+ juniperRule . Parse ( policy , null ) ;
466+ ( ( Juniper_ZonePolicy ) juniperZonePolicy ) . Rules . Add ( juniperRule ) ;
467+ }
468+ }
469+
470+ var globalPolicies = configNode . XPathSelectElements ( "./groups/security/policies/global/policy" ) ;
471+ foreach ( var globalPolicy in globalPolicies )
472+ {
473+ var juniperGlobalRule = new Juniper_GlobalPolicyRule ( ) ;
474+ juniperGlobalRule . Parse ( globalPolicy , null ) ;
475+ _juniperGlobalPolicyRules . Add ( juniperGlobalRule ) ;
476+ }
477+
478+ var defaultAction = Juniper_PolicyRule . ActionType . Deny ;
479+ var policyDefaultAction = configNode . XPathSelectElement ( "./groups/security/policies/default-policy" ) ;
480+ if ( policyDefaultAction != null && policyDefaultAction . Element ( "permit-all" ) != null )
481+ {
482+ defaultAction = Juniper_PolicyRule . ActionType . Permit ;
483+ }
484+
485+ var juniperDefaultActionRule = new Juniper_GlobalPolicyRule ( ) ;
486+ juniperDefaultActionRule . GenerateDefaultActionRule ( defaultAction ) ;
487+ _juniperGlobalPolicyRules . Add ( juniperDefaultActionRule ) ;
488+ }
489+
451490 private void ParseNat ( XElement configNode )
452491 {
453492 var nat = configNode . XPathSelectElement ( "./security/nat" ) ;
0 commit comments