summaryrefslogtreecommitdiffstats
path: root/ldpd/l2vpn.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldpd/l2vpn.c')
-rw-r--r--ldpd/l2vpn.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/ldpd/l2vpn.c b/ldpd/l2vpn.c
index bdfcd420e..92d865210 100644
--- a/ldpd/l2vpn.c
+++ b/ldpd/l2vpn.c
@@ -117,7 +117,7 @@ l2vpn_if_compare(struct l2vpn_if *a, struct l2vpn_if *b)
}
struct l2vpn_if *
-l2vpn_if_new(struct l2vpn *l2vpn, struct kif *kif)
+l2vpn_if_new(struct l2vpn *l2vpn, const char *ifname)
{
struct l2vpn_if *lif;
@@ -125,9 +125,7 @@ l2vpn_if_new(struct l2vpn *l2vpn, struct kif *kif)
fatal("l2vpn_if_new: calloc");
lif->l2vpn = l2vpn;
- strlcpy(lif->ifname, kif->ifname, sizeof(lif->ifname));
- lif->ifindex = kif->ifindex;
- lif->flags = kif->flags;
+ strlcpy(lif->ifname, ifname, sizeof(lif->ifname));
return (lif);
}
@@ -141,6 +139,14 @@ l2vpn_if_find(struct l2vpn *l2vpn, const char *ifname)
}
void
+l2vpn_if_update_info(struct l2vpn_if *lif, struct kif *kif)
+{
+ lif->ifindex = kif->ifindex;
+ lif->flags = kif->flags;
+ memcpy(lif->mac, kif->mac, sizeof(lif->mac));
+}
+
+void
l2vpn_if_update(struct l2vpn_if *lif)
{
struct l2vpn *l2vpn = lif->l2vpn;
@@ -174,7 +180,7 @@ l2vpn_pw_compare(struct l2vpn_pw *a, struct l2vpn_pw *b)
}
struct l2vpn_pw *
-l2vpn_pw_new(struct l2vpn *l2vpn, struct kif *kif)
+l2vpn_pw_new(struct l2vpn *l2vpn, const char *ifname)
{
struct l2vpn_pw *pw;
@@ -182,8 +188,7 @@ l2vpn_pw_new(struct l2vpn *l2vpn, struct kif *kif)
fatal("l2vpn_pw_new: calloc");
pw->l2vpn = l2vpn;
- strlcpy(pw->ifname, kif->ifname, sizeof(pw->ifname));
- pw->ifindex = kif->ifindex;
+ strlcpy(pw->ifname, ifname, sizeof(pw->ifname));
return (pw);
}
@@ -220,6 +225,12 @@ l2vpn_pw_find_inactive(struct l2vpn *l2vpn, const char *ifname)
}
void
+l2vpn_pw_update_info(struct l2vpn_pw *pw, struct kif *kif)
+{
+ pw->ifindex = kif->ifindex;
+}
+
+void
l2vpn_pw_init(struct l2vpn_pw *pw)
{
struct fec fec;