]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: Improve flag error messages in bgp_attr_aspath
authorPaul Jakma <paul@quagga.net>
Sun, 8 Jan 2012 14:15:03 +0000 (14:15 +0000)
committerPaul Jakma <paul@quagga.net>
Sun, 8 Jan 2012 14:15:03 +0000 (14:15 +0000)
* bgpd/bgp_attr.c: (bgp_attr_aspath) error message could be misleading,
  clearly log what flag was incorrect.

  (Problem noted in "bgpd: fix error message in bgp_attr_aspath()" in
   Quagga-RE)

bgpd/bgp_attr.c

index b013c23f37e70a2bfee1d1439ee1a7a279632e5d..1c13d11c52e781fcaf21194abeb2ac331570dca2 100644 (file)
@@ -867,7 +867,7 @@ bgp_attr_aspath (struct peer *peer, bgp_size_t length,
 
   total = length + (CHECK_FLAG (flag, BGP_ATTR_FLAG_EXTLEN) ? 4 : 3);
 
-  /* Flag check. */
+  /* Flags check. */
   if (CHECK_FLAG (flag, BGP_ATTR_FLAG_PARTIAL))
     {
       zlog (peer->log, LOG_ERR,
@@ -877,11 +877,20 @@ bgp_attr_aspath (struct peer *peer, bgp_size_t length,
                                 startp, total);
     }
 
-  if (CHECK_FLAG (flag, BGP_ATTR_FLAG_OPTIONAL)
-      || ! CHECK_FLAG (flag, BGP_ATTR_FLAG_TRANS))
+  if (!CHECK_FLAG (flag, BGP_ATTR_FLAG_TRANS))
+    {
+      zlog (peer->log, LOG_ERR,
+            "AS_PATH attribute must be flagged as \"transitive\" (%u)", flag);
+      return bgp_attr_malformed (peer, BGP_ATTR_AS_PATH, flag,
+                                BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR,
+                                startp, total);
+    }
+  
+  if (CHECK_FLAG (flag, BGP_ATTR_FLAG_OPTIONAL))
     {
       zlog (peer->log, LOG_ERR, 
-           "As-Path attribute flag isn't transitive %d", flag);
+            "AS_PATH attribute must not be flagged as \"optional\" (%u)", flag);
+      
       return bgp_attr_malformed (peer, BGP_ATTR_AS_PATH, flag,
                                  BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR,
                                  startp, total);