Apply by doing:
       cd /usr/src
       patch -p0 < 001_bgpd.patch

And then rebuild and install bgpd:
       cd usr.sbin/bgpd/
       make obj
       make depend
       make
       make install

Index: usr.sbin/bgpd/rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
retrieving revision 1.316
retrieving revision 1.316.2.1
diff -u -r1.316 -r1.316.2.1
--- usr.sbin/bgpd/rde.c 27 May 2012 18:52:07 -0000      1.316
+++ usr.sbin/bgpd/rde.c 29 Nov 2012 20:06:16 -0000      1.316.2.1
@@ -1382,7 +1382,7 @@
       } while (0)

#define CHECK_FLAGS(s, t, m)   \
-       (((s) & ~(ATTR_EXTLEN | (m))) == (t))
+       (((s) & ~(ATTR_DEFMASK | (m))) == (t))

int
rde_attr_parse(u_char *p, u_int16_t len, struct rde_peer *peer,
Index: usr.sbin/bgpd/rde.h
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.h,v
retrieving revision 1.142
retrieving revision 1.142.4.1
diff -u -r1.142 -r1.142.4.1
--- usr.sbin/bgpd/rde.h 21 Sep 2011 08:59:01 -0000      1.142
+++ usr.sbin/bgpd/rde.h 29 Nov 2012 20:06:16 -0000      1.142.4.1
@@ -118,6 +118,9 @@
#define ATTR_PARTIAL           0x20
#define ATTR_TRANSITIVE                0x40
#define ATTR_OPTIONAL          0x80
+#define ATTR_RESERVED          0x0f
+/* by default mask the reserved bits and the ext len bit */
+#define ATTR_DEFMASK           (ATTR_RESERVED | ATTR_EXTLEN)

/* default attribute flags for well known attributes */
#define ATTR_WELL_KNOWN                ATTR_TRANSITIVE
Index: usr.sbin/bgpd/rde_attr.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_attr.c,v
retrieving revision 1.90
retrieving revision 1.90.2.1
diff -u -r1.90 -r1.90.2.1
--- usr.sbin/bgpd/rde_attr.c    12 Apr 2012 17:27:20 -0000      1.90
+++ usr.sbin/bgpd/rde_attr.c    29 Nov 2012 20:06:16 -0000      1.90.2.1
@@ -37,12 +37,12 @@
       u_char          *b = p;
       u_int16_t        tmp, tot_len = 2; /* attribute header (without len) */

+       flags &= ~ATTR_DEFMASK;
       if (data_len > 255) {
               tot_len += 2 + data_len;
               flags |= ATTR_EXTLEN;
       } else {
               tot_len += 1 + data_len;
-               flags &= ~ATTR_EXTLEN;
       }

       if (tot_len > p_len)
@@ -69,12 +69,12 @@
{
       u_char  hdr[4];

+       flags &= ~ATTR_DEFMASK;
       if (data_len > 255) {
               flags |= ATTR_EXTLEN;
               hdr[2] = (data_len >> 8) & 0xff;
               hdr[3] = data_len & 0xff;
       } else {
-               flags &= ~ATTR_EXTLEN;
               hdr[2] = data_len & 0xff;
       }

@@ -322,6 +322,7 @@
               fatal("attr_optadd");
       rdemem.attr_cnt++;

+       flags &= ~ATTR_DEFMASK; /* normalize mask */
       a->flags = flags;
       a->hash = hash32_buf(&flags, sizeof(flags), HASHINIT);
       a->type = type;
@@ -351,6 +352,7 @@
       struct attr             *a;
       u_int32_t                hash;

+       flags &= ~ATTR_DEFMASK; /* normalize mask */
       hash = hash32_buf(&flags, sizeof(flags), HASHINIT);
       hash = hash32_buf(&type, sizeof(type), hash);
       hash = hash32_buf(&len, sizeof(len), hash);