mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 16:42:32 +00:00
bgpd: eliminate RD related duplicate code in bgp_encap.c
decode_rd_... apis are declared global in bgp_mplsvpn.c
This commit is contained in:
parent
446bb95e0f
commit
1a39c60a6a
@ -45,51 +45,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|||||||
#include "bgpd/bgp_vty.h"
|
#include "bgpd/bgp_vty.h"
|
||||||
#include "bgpd/bgp_encap.h"
|
#include "bgpd/bgp_encap.h"
|
||||||
|
|
||||||
static u_int16_t
|
|
||||||
decode_rd_type (u_char *pnt)
|
|
||||||
{
|
|
||||||
u_int16_t v;
|
|
||||||
|
|
||||||
v = ((u_int16_t) *pnt++ << 8);
|
|
||||||
v |= (u_int16_t) *pnt;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_rd_as (u_char *pnt, struct rd_as *rd_as)
|
|
||||||
{
|
|
||||||
rd_as->as = (u_int16_t) *pnt++ << 8;
|
|
||||||
rd_as->as |= (u_int16_t) *pnt++;
|
|
||||||
|
|
||||||
rd_as->val = ((u_int32_t) *pnt++) << 24;
|
|
||||||
rd_as->val |= ((u_int32_t) *pnt++) << 16;
|
|
||||||
rd_as->val |= ((u_int32_t) *pnt++) << 8;
|
|
||||||
rd_as->val |= (u_int32_t) *pnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_rd_as4 (u_char *pnt, struct rd_as *rd_as)
|
|
||||||
{
|
|
||||||
rd_as->as = (u_int32_t) *pnt++ << 24;
|
|
||||||
rd_as->as |= (u_int32_t) *pnt++ << 16;
|
|
||||||
rd_as->as |= (u_int32_t) *pnt++ << 8;
|
|
||||||
rd_as->as |= (u_int32_t) *pnt++;
|
|
||||||
|
|
||||||
rd_as->val = ((u_int32_t) *pnt++ << 8);
|
|
||||||
rd_as->val |= (u_int32_t) *pnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
decode_rd_ip (u_char *pnt, struct rd_ip *rd_ip)
|
|
||||||
{
|
|
||||||
memcpy (&rd_ip->ip, pnt, 4);
|
|
||||||
pnt += 4;
|
|
||||||
|
|
||||||
rd_ip->val = ((u_int16_t) *pnt++ << 8);
|
|
||||||
rd_ip->val |= (u_int16_t) *pnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ecom2prd(struct ecommunity *ecom, struct prefix_rd *prd)
|
ecom2prd(struct ecommunity *ecom, struct prefix_rd *prd)
|
||||||
{
|
{
|
||||||
|
@ -35,7 +35,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|||||||
#include "bgpd/bgp_attr.h"
|
#include "bgpd/bgp_attr.h"
|
||||||
#include "bgpd/bgp_mplsvpn.h"
|
#include "bgpd/bgp_mplsvpn.h"
|
||||||
|
|
||||||
static u_int16_t
|
u_int16_t
|
||||||
decode_rd_type (u_char *pnt)
|
decode_rd_type (u_char *pnt)
|
||||||
{
|
{
|
||||||
u_int16_t v;
|
u_int16_t v;
|
||||||
@ -57,7 +57,7 @@ decode_label (u_char *pnt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* type == RD_TYPE_AS */
|
/* type == RD_TYPE_AS */
|
||||||
static void
|
void
|
||||||
decode_rd_as (u_char *pnt, struct rd_as *rd_as)
|
decode_rd_as (u_char *pnt, struct rd_as *rd_as)
|
||||||
{
|
{
|
||||||
rd_as->as = (u_int16_t) *pnt++ << 8;
|
rd_as->as = (u_int16_t) *pnt++ << 8;
|
||||||
@ -70,7 +70,7 @@ decode_rd_as (u_char *pnt, struct rd_as *rd_as)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* type == RD_TYPE_AS4 */
|
/* type == RD_TYPE_AS4 */
|
||||||
static void
|
void
|
||||||
decode_rd_as4 (u_char *pnt, struct rd_as *rd_as)
|
decode_rd_as4 (u_char *pnt, struct rd_as *rd_as)
|
||||||
{
|
{
|
||||||
rd_as->as = (u_int32_t) *pnt++ << 24;
|
rd_as->as = (u_int32_t) *pnt++ << 24;
|
||||||
@ -83,7 +83,7 @@ decode_rd_as4 (u_char *pnt, struct rd_as *rd_as)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* type == RD_TYPE_IP */
|
/* type == RD_TYPE_IP */
|
||||||
static void
|
void
|
||||||
decode_rd_ip (u_char *pnt, struct rd_ip *rd_ip)
|
decode_rd_ip (u_char *pnt, struct rd_ip *rd_ip)
|
||||||
{
|
{
|
||||||
memcpy (&rd_ip->ip, pnt, 4);
|
memcpy (&rd_ip->ip, pnt, 4);
|
||||||
|
@ -41,9 +41,14 @@ struct rd_ip
|
|||||||
u_int16_t val;
|
u_int16_t val;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern u_int16_t decode_rd_type (u_char *);
|
||||||
extern void bgp_mplsvpn_init (void);
|
extern void bgp_mplsvpn_init (void);
|
||||||
extern int bgp_nlri_parse_vpn (struct peer *, struct attr *, struct bgp_nlri *);
|
extern int bgp_nlri_parse_vpn (struct peer *, struct attr *, struct bgp_nlri *);
|
||||||
extern u_int32_t decode_label (u_char *);
|
extern u_int32_t decode_label (u_char *);
|
||||||
|
extern void encode_label(u_int32_t, u_char *);
|
||||||
|
extern void decode_rd_as (u_char *, struct rd_as *);
|
||||||
|
extern void decode_rd_as4 (u_char *, struct rd_as *);
|
||||||
|
extern void decode_rd_ip (u_char *, struct rd_ip *);
|
||||||
extern int str2prefix_rd (const char *, struct prefix_rd *);
|
extern int str2prefix_rd (const char *, struct prefix_rd *);
|
||||||
extern int str2tag (const char *, u_char *);
|
extern int str2tag (const char *, u_char *);
|
||||||
extern char *prefix_rd2str (struct prefix_rd *, char *, size_t);
|
extern char *prefix_rd2str (struct prefix_rd *, char *, size_t);
|
||||||
|
Loading…
Reference in New Issue
Block a user