]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Merge remote-tracking branch 'origin/master' into pim_lib_work2
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 18 Jan 2017 02:01:56 +0000 (21:01 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 18 Jan 2017 02:01:56 +0000 (21:01 -0500)
74 files changed:
1  2 
bgpd/bgp_attr.c
bgpd/bgp_open.c
bgpd/bgp_open.h
bgpd/bgp_packet.c
bgpd/bgp_route.c
bgpd/bgpd.c
bgpd/bgpd.h
lib/log.c
lib/zebra.h
pimd/DEBUG
pimd/Makefile.am
pimd/pim_assert.c
pimd/pim_cmd.c
pimd/pim_cmd.h
pimd/pim_hello.c
pimd/pim_hello.h
pimd/pim_iface.c
pimd/pim_iface.h
pimd/pim_ifchannel.c
pimd/pim_ifchannel.h
pimd/pim_igmp.c
pimd/pim_igmp.h
pimd/pim_igmp_join.h
pimd/pim_igmpv3.c
pimd/pim_igmpv3.h
pimd/pim_join.c
pimd/pim_join.h
pimd/pim_macro.c
pimd/pim_main.c
pimd/pim_mroute.c
pimd/pim_mroute.h
pimd/pim_msg.c
pimd/pim_msg.h
pimd/pim_neighbor.c
pimd/pim_neighbor.h
pimd/pim_oil.c
pimd/pim_oil.h
pimd/pim_pim.c
pimd/pim_pim.h
pimd/pim_rpf.c
pimd/pim_rpf.h
pimd/pim_signals.c
pimd/pim_signals.h
pimd/pim_sock.c
pimd/pim_sock.h
pimd/pim_ssmpingd.c
pimd/pim_ssmpingd.h
pimd/pim_static.c
pimd/pim_str.c
pimd/pim_str.h
pimd/pim_time.c
pimd/pim_time.h
pimd/pim_tlv.c
pimd/pim_tlv.h
pimd/pim_upstream.c
pimd/pim_upstream.h
pimd/pim_util.c
pimd/pim_util.h
pimd/pim_vty.c
pimd/pim_vty.h
pimd/pim_zebra.c
pimd/pim_zebra.h
pimd/pim_zlookup.c
pimd/pim_zlookup.h
pimd/pimd.c
pimd/pimd.h
pimd/test_igmpv3_join.c
zebra/if_netlink.c
zebra/rt_netlink.c
zebra/zebra_fpm_netlink.c
zebra/zebra_rib.c
zebra/zebra_static.c
zebra/zebra_vty.c
zebra/zserv.c

diff --cc bgpd/bgp_attr.c
index 0cdaa545d6db8e25214fde7b6163516daf02cf57,4cf1f0daed7ac3f0d88917e106b905b59c2c3172..5c26ecc6ad922746bfb65a967f6dd654d6a7bf2c
@@@ -1738,8 -1849,8 +1849,9 @@@ in
  bgp_mp_reach_parse (struct bgp_attr_parser_args *args,
                      struct bgp_nlri *mp_update)
  {
-   afi_t afi;
-   safi_t safi;
 -  afi_t pkt_afi, afi;
++  iana_afi_t pkt_afi;
++  afi_t  afi;
+   safi_t pkt_safi, safi;
    bgp_size_t nlri_len;
    size_t start;
    struct stream *s;
@@@ -1879,8 -2000,8 +2001,9 @@@ bgp_mp_unreach_parse (struct bgp_attr_p
                      struct bgp_nlri *mp_withdraw)
  {
    struct stream *s;
 -  afi_t pkt_afi, afi;
++  iana_afi_t pkt_afi;
 +  afi_t afi;
-   safi_t safi;
+   safi_t pkt_safi, safi;
    u_int16_t withdraw_len;
    struct peer *const peer = args->peer;  
    struct attr *const attr = args->attr;
@@@ -2507,6 -2648,8 +2650,8 @@@ bgp_packet_mpattr_start (struct stream 
                         struct attr *attr)
  {
    size_t sizep;
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
  
    /* Set extended bit always to encode the attribute length as 2 bytes */
    stream_putc (s, BGP_ATTR_FLAG_OPTIONAL|BGP_ATTR_FLAG_EXTLEN);
@@@ -3134,6 -3279,8 +3281,8 @@@ size_
  bgp_packet_mpunreach_start (struct stream *s, afi_t afi, safi_t safi)
  {
    unsigned long attrlen_pnt;
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
  
    /* Set extended bit always to encode the attribute length as 2 bytes */
    stream_putc (s, BGP_ATTR_FLAG_OPTIONAL|BGP_ATTR_FLAG_EXTLEN);
diff --cc bgpd/bgp_open.c
index 02026a004ab30426abdd196f9a9556091355b5b1,4a06881041f024ca82e2b2ddca8af944f9d1bfdd..7dbb439be1b7342706f716eb51bd6c41aeeb4040
@@@ -213,7 -188,7 +188,9 @@@ bgp_capability_mp (struct peer *peer, s
  {
    struct capability_mp_data mpc;
    struct stream *s = BGP_INPUT (peer);
--  
++  afi_t afi;
++  safi_t safi;
++
    /* Verify length is 4 */
    if (hdr->length != 4)
      {
      zlog_debug ("%s OPEN has MP_EXT CAP for afi/safi: %u/%u",
                 peer->host, mpc.afi, mpc.safi);
    
-   if (!bgp_afi_safi_valid_indices (mpc.afi, &mpc.safi))
+   /* Convert AFI, SAFI to internal values, check. */
 -  if (bgp_map_afi_safi_iana2int (mpc.afi, mpc.safi, &mpc.afi, &mpc.safi))
++  if (bgp_map_afi_safi_iana2int (mpc.afi, mpc.safi, &afi, &safi))
      return -1;
     
    /* Now safi remapped, and afi/safi are valid array indices */
--  peer->afc_recv[mpc.afi][mpc.safi] = 1;
++  peer->afc_recv[afi][safi] = 1;
    
--  if (peer->afc[mpc.afi][mpc.safi])
--    peer->afc_nego[mpc.afi][mpc.safi] = 1;
++  if (peer->afc[afi][safi])
++    peer->afc_nego[afi][safi] = 1;
    else 
      return -1;
  
  }
  
  static void
--bgp_capability_orf_not_support (struct peer *peer, afi_t afi, safi_t safi,
++bgp_capability_orf_not_support (struct peer *peer, iana_afi_t afi, safi_t safi,
                                u_char type, u_char mode)
  {
    if (bgp_debug_neighbor_events(peer))
@@@ -271,8 -247,8 +249,9 @@@ bgp_capability_orf_entry (struct peer *
  {
    struct stream *s = BGP_INPUT (peer);
    struct capability_orf_entry entry;
 -  afi_t pkt_afi, afi;
++  iana_afi_t pkt_afi;
 +  afi_t afi;
-   safi_t safi;
+   safi_t pkt_safi, safi;
    u_char type;
    u_char mode;
    u_int16_t sm_cap = 0; /* capability send-mode receive */
        return 0;
      }
    
 -  entry.mpc.afi = afi;
++  entry.mpc.afi = pkt_afi;
+   entry.mpc.safi = safi;
    /* validate number field */
    if (CAPABILITY_CODE_ORF_LEN + (entry.num * 2) > hdr->length)
      {
@@@ -437,11 -416,14 +419,14 @@@ bgp_capability_restart (struct peer *pe
  
    while (stream_get_getp (s) + 4 <= end)
      {
-       afi_t afi = stream_getw (s);
-       safi_t safi = stream_getc (s);
+       afi_t afi;
+       safi_t safi;
 -      afi_t pkt_afi = stream_getw (s);
++      iana_afi_t pkt_afi = stream_getw (s);
+       safi_t pkt_safi = stream_getc (s);
        u_char flag = stream_getc (s);
        
-       if (!bgp_afi_safi_valid_indices (afi, &safi))
+       /* Convert AFI, SAFI to internal values, check. */
+       if (bgp_map_afi_safi_iana2int (pkt_afi, pkt_safi, &afi, &safi))
          {
            if (bgp_debug_neighbor_events(peer))
              zlog_debug ("%s Addr-family %d/%d(afi/safi) not supported."
@@@ -512,8 -494,10 +497,10 @@@ bgp_capability_addpath (struct peer *pe
  
    while (stream_get_getp (s) + 4 <= end)
      {
-       afi_t afi = stream_getw (s);
-       safi_t safi = stream_getc (s);
+       afi_t afi;
+       safi_t safi;
 -      afi_t pkt_afi = stream_getw (s);
++      iana_afi_t pkt_afi = stream_getw (s);
+       safi_t pkt_safi = stream_getc (s);
        u_char send_receive = stream_getc (s);
  
        if (bgp_debug_neighbor_events(peer))
@@@ -565,9 -550,9 +553,11 @@@ bgp_capability_enhe (struct peer *peer
  
    while (stream_get_getp (s) + 6 <= end)
      {
-       afi_t afi = stream_getw (s);
-       safi_t safi = stream_getw (s);
-       afi_t nh_afi = stream_getw (s);
 -      afi_t afi, pkt_afi = stream_getw (s);
++      iana_afi_t pkt_afi = stream_getw (s);
++      afi_t afi;
+       safi_t safi, pkt_safi = stream_getw (s);
 -      afi_t nh_afi, pkt_nh_afi = stream_getw (s);
++      iana_afi_t pkt_nh_afi = stream_getw (s);
++      afi_t nh_afi;
  
        if (bgp_debug_neighbor_events(peer))
          zlog_debug ("%s Received with afi/safi/next-hop afi: %u/%u/%u",
@@@ -1174,9 -1162,11 +1167,11 @@@ bgp_open_capability_orf (struct stream 
    unsigned long orfp;
    unsigned long numberp;
    int number_of_orfs = 0;
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
  
-   if (safi == SAFI_MPLS_VPN)
-     safi = SAFI_MPLS_LABELED_VPN;
+   /* Convert AFI, SAFI to values for packet. */
+   bgp_map_afi_safi_int2iana (afi, safi, &pkt_afi, &pkt_safi);
  
    stream_putc (s, BGP_OPEN_OPT_CAP);
    capp = stream_get_endp (s);           /* Set Capability Len Pointer */
@@@ -1235,8 -1225,8 +1230,9 @@@ bgp_open_capability (struct stream *s, 
  {
    u_char len;
    unsigned long cp, capp, rcapp;
 -  afi_t afi, pkt_afi;
++  iana_afi_t pkt_afi;
 +  afi_t afi;
-   safi_t safi;
+   safi_t safi, pkt_safi;
    as_t local_as;
    u_int32_t restart_time;
    u_char afi_safi_count = 0;
diff --cc bgpd/bgp_open.h
index 8ec0a5416b1210515e04360440a12513b4520dd1,b0a396ec11e342cc8a60da293e23ef71e8b5f1c4..9275b3a101d894607a3a2d05baebc9a6631a2560
@@@ -31,7 -31,7 +31,7 @@@ struct capability_heade
  /* Generic MP capability data */
  struct capability_mp_data
  {
--  afi_t afi;
++  iana_afi_t afi;
    u_char reserved;
    safi_t safi;
  };
index 796a57f054f9ca88b19be9b24c30375abc46eb13,38470a3c7e9ff6d513da368d55afacd633d6e9b5..529a3e46ca91415d17ccf2aef06b36457c358b85
@@@ -147,6 -147,8 +147,8 @@@ static struct stream 
  bgp_update_packet_eor (struct peer *peer, afi_t afi, safi_t safi)
  {
    struct stream *s;
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
  
    if (DISABLE_BGP_ANNOUNCE)
      return NULL;
@@@ -691,6 -695,8 +695,8 @@@ bgp_route_refresh_send (struct peer *pe
    struct stream *s;
    struct bgp_filter *filter;
    int orf_refresh = 0;
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
  
    if (DISABLE_BGP_ANNOUNCE)
      return;
@@@ -777,10 -782,11 +782,11 @@@ bgp_capability_send (struct peer *peer
                     int capability_code, int action)
  {
    struct stream *s;
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
  
-   /* Adjust safi code. */
-   if (safi == SAFI_MPLS_VPN)
-     safi = SAFI_MPLS_LABELED_VPN;
+   /* Convert AFI, SAFI to values for packet. */
+   bgp_map_afi_safi_int2iana (afi, safi, &pkt_afi, &pkt_safi);
  
    s = stream_new (BGP_MAX_PACKET_SIZE);
  
@@@ -1728,8 -1711,8 +1711,9 @@@ bgp_keepalive_receive (struct peer *pee
  static void
  bgp_route_refresh_receive (struct peer *peer, bgp_size_t size)
  {
 -  afi_t pkt_afi, afi;
++  iana_afi_t pkt_afi;
 +  afi_t afi;
-   safi_t safi;
+   safi_t pkt_safi, safi;
    struct stream *s;
    struct peer_af *paf;
    struct update_group *updgrp;
@@@ -1955,8 -1932,8 +1933,9 @@@ bgp_capability_msg_parse (struct peer *
    struct capability_mp_data mpc;
    struct capability_header *hdr;
    u_char action;
 -  afi_t pkt_afi, afi;
++  iana_afi_t pkt_afi;
 +  afi_t afi;
-   safi_t safi;
+   safi_t pkt_safi, safi;
  
    end = pnt + length;
  
index cfc4ec34077f8a4b3c6de5ef1f5ab7b10b21317d,d2abb40ca9f6eea02200cfab73dc105fb960e2cd..75036b549655e1664658a0cef5c6cb37ede830c1
@@@ -2115,9 -2110,12 +2110,12 @@@ bgp_maximum_prefix_restart_timer (struc
  }
  
  int
--bgp_maximum_prefix_overflow (struct peer *peer, afi_t afi, 
++bgp_maximum_prefix_overflow (struct peer *peer, afi_t afi,
                               safi_t safi, int always)
  {
 -  afi_t pkt_afi;
++  iana_afi_t pkt_afi;
+   safi_t pkt_safi;
    if (!CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX))
      return 0;
  
diff --cc bgpd/bgpd.c
index 30f6e0d859a51aa4ea18414a8d07d4d534ece340,5457822f3be672e61dd2b14b30913fc6869a8acb..c08107f0d931393c2285e8bde0c4f79eee2d1125
@@@ -651,6 -651,35 +651,35 @@@ bgp_listen_limit_unset (struct bgp *bgp
    return 0;
  }
  
 -bgp_map_afi_safi_iana2int (afi_t pkt_afi, safi_t pkt_safi,
+ int
 -                           afi_t *pkt_afi, safi_t *pkt_safi)
++bgp_map_afi_safi_iana2int (iana_afi_t pkt_afi, safi_t pkt_safi,
+                            afi_t *afi, safi_t *safi)
+ {
+   /* Map from IANA values to internal values, return error if
+    * values are unrecognized.
+    */
+   *afi = afi_iana2int (pkt_afi);
+   *safi = safi_iana2int (pkt_safi);
+   if (*afi == AFI_MAX || *safi == SAFI_MAX)
+     return -1;
+   return 0;
+ }
+ int
+ bgp_map_afi_safi_int2iana (afi_t afi, safi_t safi,
++                           iana_afi_t *pkt_afi, safi_t *pkt_safi)
+ {
+   /* Map from internal values to IANA values, return error if
+    * internal values are bad (unexpected).
+    */
+   if (afi == AFI_MAX || safi == SAFI_MAX)
+     return -1;
+   *pkt_afi = afi_int2iana (afi);
+   *pkt_safi = safi_int2iana (safi);
+   return 0;
+ }
  struct peer_af *
  peer_af_create (struct peer *peer, afi_t afi, safi_t safi)
  {
diff --cc bgpd/bgpd.h
index 86fa207b6b7f4ae694acbbe01ebb600449004c9f,2718805130c66308d6ed951ec0ced372024481a5..3dd5523dce24964d33c5a431a8fa1e9423e023ff
@@@ -1359,6 -1354,13 +1354,13 @@@ extern void bgp_route_map_terminate(voi
  
  extern int peer_cmp (struct peer *p1, struct peer *p2);
  
 -bgp_map_afi_safi_iana2int (afi_t pkt_afi, safi_t pkt_safi,
+ extern int
 -                           afi_t *pkt_afi, safi_t *pkt_safi);
++bgp_map_afi_safi_iana2int (iana_afi_t pkt_afi, safi_t pkt_safi,
+                            afi_t *afi, safi_t *safi);
+ extern int
+ bgp_map_afi_safi_int2iana (afi_t afi, safi_t safi,
++                           iana_afi_t *pkt_afi, safi_t *pkt_safi);
  extern struct peer_af * peer_af_create (struct peer *, afi_t, safi_t);
  extern struct peer_af * peer_af_find (struct peer *, afi_t, safi_t);
  extern int peer_af_delete (struct peer *, afi_t, safi_t);
diff --cc lib/log.c
Simple merge
diff --cc lib/zebra.h
index f344867697465b84c59f08955758f253a2e46d60,5a58cf8e6e6ec0059428b9deef4d1f6f9fac415a..f89e7f5c3f25c90c1431df19f867ae8a7e682955
@@@ -472,11 -471,12 +472,18 @@@ typedef enum 
  /* Subsequent Address Family Identifier. */
  #define SAFI_UNICAST              1
  #define SAFI_MULTICAST            2
- #define SAFI_RESERVED_3           3
- #define SAFI_MPLS_VPN             4
- #define SAFI_ENCAP              7 /* per IANA */
- #define SAFI_MAX                  8
+ #define SAFI_MPLS_VPN             3
+ #define SAFI_RESERVED_4           4
+ #define SAFI_ENCAP              5
+ #define SAFI_RESERVED_5           5
+ #define SAFI_MAX                  6
++#define IANA_SAFI_RESERVED            0
++#define IANA_SAFI_UNICAST             1
++#define IANA_SAFI_MULTICAST           2
++#define IANA_SAFI_ENCAP               7
++#define IANA_SAFI_MPLS_VPN            128
 +
  /*
   * The above AFI and SAFI definitions are for internal use. The protocol
   * definitions (IANA values) as for example used in BGP protocol packets
@@@ -527,4 -528,48 +534,48 @@@ typedef uint32_t route_tag_t
  #define ROUTE_TAG_MAX UINT32_MAX
  #define ROUTE_TAG_PRI PRIu32
  
 -static inline afi_t afi_iana2int (afi_t afi)
++static inline afi_t afi_iana2int (iana_afi_t afi)
+ {
+   if (afi == IANA_AFI_IPV4)
+     return AFI_IP;
+   if (afi == IANA_AFI_IPV6)
+     return AFI_IP6;
+   return AFI_MAX;
+ }
 -static inline afi_t afi_int2iana (afi_t afi)
++static inline iana_afi_t afi_int2iana (afi_t afi)
+ {
+   if (afi == AFI_IP)
+     return IANA_AFI_IPV4;
+   if (afi == AFI_IP6)
+     return IANA_AFI_IPV6;
+   return IANA_AFI_RESERVED;
+ }
+ static inline safi_t safi_iana2int (safi_t safi)
+ {
+   if (safi == IANA_SAFI_UNICAST)
+     return SAFI_UNICAST;
+   if (safi == IANA_SAFI_MULTICAST)
+     return SAFI_MULTICAST;
+   if (safi == IANA_SAFI_MPLS_VPN)
+     return SAFI_MPLS_VPN;
+   if (safi == IANA_SAFI_ENCAP)
+     return SAFI_ENCAP;
+   return SAFI_MAX;
+ }
+ static inline safi_t safi_int2iana (safi_t safi)
+ {
+   if (safi == SAFI_UNICAST)
+     return IANA_SAFI_UNICAST;
+   if (safi == SAFI_MULTICAST)
+     return IANA_SAFI_MULTICAST;
+   if (safi == SAFI_MPLS_VPN)
+     return IANA_SAFI_MPLS_VPN;
+   if (safi == SAFI_ENCAP)
+     return IANA_SAFI_ENCAP;
+   return IANA_SAFI_RESERVED;
+ }
  #endif /* _ZEBRA_H */
diff --cc pimd/DEBUG
index ea1b14158d7730cf6e908ecbd7230ba5e92d3ae0,a6ad260e82243d18e61f588c739f4d625ef08ca0..b87542a4a283ef3e47aee6e4987f9c587b21bcd2
@@@ -1,4 -1,3 +1,7 @@@
++<<<<<<< HEAD
 +
++=======
++>>>>>>> origin/master
  DEBUG HINTS
  
    - Check the source is issuing multicast packets with TTL high enough
Simple merge
index f28e2c0e85662e4da83526deaabbbe0c83dad247,f09540ea00b9ca46c7ef5fb3671bad176c9e3dab..385b897bf9f74d276f984a09b53af8d40ec8a100
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_cmd.c
index 3646145309e1ce3041d98178505836062a6602ae,088713012eceb04cb28b584ff0eb89ca50c92a90..50578bf1e82a078f50b16f4ccf86c2394e031047
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_cmd.h
Simple merge
Simple merge
index 3ab83db5eb8da45ed239070943c7f2460aedaee3,3a6d3361ba3b877de661a33744aa199feed9e88c..f8e722cd04b7b304a62cbd568efb81276eb7aa20
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_HELLO_H
index 0b5c7cc1eb5dffa237a4d340cd697f8abd5a74aa,bac9692caa4ca406e41d58f59dce050117ad563d..7b2c7e2e93e6aab794d391c50f4c1b32f3f0c3da
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
index 17bbbd9937fdd24c35972441822343df179e136b,e56559ca462a513b8e9aa0fa672a30943c6c037b..bd4ebd257d468224ae5861688971c19ce4bb421c
@@@ -16,8 -16,7 +16,7 @@@
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
-   
--*/
++s*/
  
  #ifndef PIM_IFACE_H
  #define PIM_IFACE_H
Simple merge
index a95f66551bacd4e5f4e655b5683049edbad8aed4,ce753222ee0bb2d3553c7e4e98c9e893b781c57f..c1ce52449af435e386baa5d7edd9a9a3fb1c9096
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_IFCHANNEL_H
diff --cc pimd/pim_igmp.c
index 456b9ad742b1952079c695222a5b212f0467aaef,ef1b3cbac0434bc8185eb796bf2216f2a805cc1c..a309de690bdd2686861ead68a778565c8837b77a
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_igmp.h
Simple merge
index 2c72a4bea64f748912badfc2e0119cfea7aad798,ba80db0696c801d3ac137faa3071fe78b56217ad..d9542732b815c754d9a0cc81aed6a2a16f0032c5
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_IGMP_JOIN_H
index 987ab895ae63a6fc0f588e613e88521f0b7970a3,bdaf2bb27010af0c3bfc396b559203d4e79867ad..4de3b65ec5f79d2ddba83d0a8f9521102a6e50b5
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
index 33a918bad11a276b0df2bd79e22b49802189b311,db7895f9be8a82880a7e6db4e38565c1268dbcf4..893fba60f2137272948c26e127ce399ab6d8ba06
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_IGMPV3_H
diff --cc pimd/pim_join.c
index c0535c4844ce43eeccf9d36d1ddd56bdd0a05d49,6a5fb851d6ec86ddba1195686b328d64544d1b80..db17c3faec08440a31e435b8216f9bc55584c8aa
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_join.h
index fadb613592c9e31cd465040ccbedca4953f1af57,dcdca00359b84baddee75a69bb92cf0a8a3ce642..27333243db41fe565013ab8a75beab1320407569
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_JOIN_H
Simple merge
diff --cc pimd/pim_main.c
index 7fc9bc524e3d70a65e4bb5e5976837e604514a68,ed8f69b5172b4975d5f7bed54168ebdaf98433aa..e7b86a04042f1020866839c4b51afe05a8e5d5f1
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
@@@ -166,9 -174,14 +169,9 @@@ int main(int argc, char** argv, char** 
        break;
      case 'v':
        printf(PIMD_PROGNAME " version %s\n", PIMD_VERSION);
-       print_version(QUAGGA_PROGNAME);
+       print_version(progname);
        exit (0);
        break;
 -#ifdef PIM_ZCLIENT_DEBUG
 -    case 'Z':
 -      zclient_debug = 1;
 -      break;
 -#endif
      case 'h':
        usage (0);
        break;
index 1489c70f08f9510ca6e852ceda55115e4de5a04f,3fbed88800ee3490909c619f1d41489ac53470a8..8e97233d4b207e4f0397c44bcda32d8210d6b575
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
Simple merge
diff --cc pimd/pim_msg.c
index d511123f9806bf99a3302114ca4a971b25fc5bf3,9d0fc0ad8f6f163fc6ccc095b662a5d06cb7a85c..e1f20b14961d05f245f0727552f517e491ded0df
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_msg.h
Simple merge
Simple merge
index b5bd5f6244aab538d36527909490f5a80c0306f9,e023a7f1ef784b094cf58cbf4630f4161a737fc0..9e419aec18c85e17df82a3cd99b25fbead0c037a
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_NEIGHBOR_H
diff --cc pimd/pim_oil.c
index aa059797da10f0f7442ae8e6d4e03b1ef77ce40b,ebbc6e19f96e843cafcbeed25dde6f91dd522dd3..1c0a2f2beab32038fb1db634d3d3a3339bac35dc
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_oil.h
Simple merge
diff --cc pimd/pim_pim.c
Simple merge
diff --cc pimd/pim_pim.h
index abb3e50c0036a175384164ec77661c8aa0935ce2,5692a37938de1718a0bdd9b44b849dfaebd8c279..1f7e1e5d4f166a29b57dde6ae8fd9b23938af158
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_PIM_H
diff --cc pimd/pim_rpf.c
Simple merge
diff --cc pimd/pim_rpf.h
Simple merge
index 8e14627e4df1d7eecd5c12cfbafaa6044c828e0a,bd4d9e4857a9be9893be0cd736ca7029eb091f59..0a60bba2526d5ec68df4ff49946d62272a4ce250
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
index b05dbb39cb71624a226e25424f0e55eca8dff7bb,7b25608c105ae5ca99596a0c1a88b09158f8c2d2..8a3f836fa3e3b80f84a1419d9044df9dea1dbfa9
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_SIGNALS_H
diff --cc pimd/pim_sock.c
Simple merge
diff --cc pimd/pim_sock.h
Simple merge
index 00abc5f60af8e00549811263a07ccaf50db4c93e,ece644a8615ba7eb8548b0406b71566262e8531d..e443a92d614800c35a283c19cd153dc69573c8c5
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
index ab3351cde150ca4c7c979d2af85054515771040d,54f787e2a311445b18311098b4c7f0b31b426da0..29759c9531ffeb3ec10daf92c7c7a59c2b28e32b
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_SSMPINGD_H
Simple merge
diff --cc pimd/pim_str.c
index 51440317940b7383965d96d8000d2bf4a016de91,c817045697c418bccd8ec450ee636f106ebd835e..7f814fcda89a44814ee339be55db5194311148e7
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_str.h
index da7257357085c0ae16c5b4aaefc047e06f0bd730,d2af0110a40a8f0c14cfd1dea35922eee7e7f11c..3536417a952be69d3f38f62eef8fb827a91aed8f
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_STR_H
diff --cc pimd/pim_time.c
Simple merge
diff --cc pimd/pim_time.h
Simple merge
diff --cc pimd/pim_tlv.c
index dcded95035b59999be819e12fdd04e7c7ccb6740,546ceb86e189965b25367bb34f1ef95cf0a2a281..2b2a06d3685669e0899ef34f906fba3b0ca38928
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_tlv.h
index ee7692ab806e8310c739b660fb8ccd5771c501ca,16c5aa4b97e2fc5b6f96be72024f7e52fd743ccf..d176c264713c111013cef2b7c0117120f22835a1
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_TLV_H
Simple merge
Simple merge
diff --cc pimd/pim_util.c
index 1b1b5ef8f34f95fcc4e81463ee408e294234389e,f5b6a8210abb3077b12020002d3c810e2d5a2648..6d7a8c19089033365eb2d51e430570dc80a0a968
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_util.h
index 3a7844b4025b9d77c0ebdfd2a80064bc6690fd1f,d780bfbc27554e11ad2074bf4c125bec39544010..fbb7b0196b0460b3a0e1d0f4ca379e8cb5634ce0
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_UTIL_H
diff --cc pimd/pim_vty.c
index 8815813ce1e78c5353d385280f59332ba0cd7a38,f9bc2319e75fc6485bd0467755e1ef6c5d98ba72..ee4fcd3150a526f936839a96cacb68c09540f03e
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
diff --cc pimd/pim_vty.h
index 787af60c3bbf80c208fed6988045a2e1417d966d,18a632e016278daefdb15ec6dd6bc2c84f0e589c..37ec07b2bff4cad0c075607388ee9e8cb7e7d1c3
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #ifndef PIM_VTY_H
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc pimd/pimd.c
Simple merge
diff --cc pimd/pimd.h
Simple merge
index a345945ea45190aa961712c434e62bc3a821c1eb,29143f362e08a9728b1938cfbe1be4687c2c5fe7..81da867e03f468b1650123720007e5ff9e705e9f
    along with this program; see the file COPYING; if not, write to the
    Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
    MA 02110-1301 USA
++<<<<<<< HEAD
 +  
++=======
++>>>>>>> origin/master
  */
  
  #include <zebra.h>
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc zebra/zserv.c
Simple merge