mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 07:48:07 +00:00
2005-03-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* irdp.h: Add prototype for irdp_sock_init, and fix protos for other irdp_* functions. * irdp_interface.c: (irdp_if_start) If irdp_sock is negative, call irdp_sock_init to create the IRDP socket. (irdp_if_init) Rename to irdp_init(). (get_iflist_ifp) Remove function that is a duplicate of if_lookup_by_index. (*) Make many functions static. And remove superfluous "\n" from several zlog messages. * irdp_main.c: (irdp_init) Remove function that used to call irdp_if_init() and irdp_sock_init(), since we will now create the socket only upon first use. (irdp_sock_init) Do not update global irdp_sock variable, just return the fd and assume that the caller will do so. If setsockopt calls fail, close the socket before returning -1. (*) Make many functions static. * irdp_packet.c: Initialize irdp_sock to -1. (irdp_read_raw) Call standard library function if_lookup_by_index instead of get_iflist_ifp. (irdp_recvmsg) Should be static, not global.
This commit is contained in:
parent
a608bbf27b
commit
2da40f4919
@ -1,3 +1,26 @@
|
|||||||
|
2005-03-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
|
* irdp.h: Add prototype for irdp_sock_init, and fix protos for
|
||||||
|
other irdp_* functions.
|
||||||
|
* irdp_interface.c: (irdp_if_start) If irdp_sock is negative,
|
||||||
|
call irdp_sock_init to create the IRDP socket.
|
||||||
|
(irdp_if_init) Rename to irdp_init().
|
||||||
|
(get_iflist_ifp) Remove function that is a duplicate of
|
||||||
|
if_lookup_by_index.
|
||||||
|
(*) Make many functions static. And remove superfluous "\n" from
|
||||||
|
several zlog messages.
|
||||||
|
* irdp_main.c: (irdp_init) Remove function that used to call
|
||||||
|
irdp_if_init() and irdp_sock_init(), since we will now create
|
||||||
|
the socket only upon first use.
|
||||||
|
(irdp_sock_init) Do not update global irdp_sock variable, just
|
||||||
|
return the fd and assume that the caller will do so. If setsockopt
|
||||||
|
calls fail, close the socket before returning -1.
|
||||||
|
(*) Make many functions static.
|
||||||
|
* irdp_packet.c: Initialize irdp_sock to -1.
|
||||||
|
(irdp_read_raw) Call standard library function if_lookup_by_index
|
||||||
|
instead of get_iflist_ifp.
|
||||||
|
(irdp_recvmsg) Should be static, not global.
|
||||||
|
|
||||||
2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
* rt_netlink.c: (netlink_link_change) If the status of an
|
* rt_netlink.c: (netlink_link_change) If the status of an
|
||||||
|
13
zebra/irdp.h
13
zebra/irdp.h
@ -142,12 +142,9 @@ struct Adv
|
|||||||
int pref;
|
int pref;
|
||||||
};
|
};
|
||||||
|
|
||||||
void irdp_init();
|
extern void irdp_init(void);
|
||||||
void irdp_finish();
|
extern int irdp_sock_init(void);
|
||||||
void irdp_config_write (struct vty *, struct interface *);
|
extern void irdp_finish(void);
|
||||||
|
extern void irdp_config_write (struct vty *, struct interface *);
|
||||||
|
|
||||||
#endif /* _IRDP_H */
|
#endif /* _IRDP_H */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -74,7 +74,8 @@ void irdp_advert_off(struct interface *ifp);
|
|||||||
|
|
||||||
char b1[16], b2[16], b3[16], b4[16]; /* For inet_2a */
|
char b1[16], b2[16], b3[16], b4[16]; /* For inet_2a */
|
||||||
|
|
||||||
struct prefix *irdp_get_prefix(struct interface *ifp)
|
static struct prefix *
|
||||||
|
irdp_get_prefix(struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct listnode *node;
|
struct listnode *node;
|
||||||
struct connected *ifc;
|
struct connected *ifc;
|
||||||
@ -87,7 +88,8 @@ struct prefix *irdp_get_prefix(struct interface *ifp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Join to the add/leave multicast group. */
|
/* Join to the add/leave multicast group. */
|
||||||
int if_group (struct interface *ifp,
|
static int
|
||||||
|
if_group (struct interface *ifp,
|
||||||
int sock,
|
int sock,
|
||||||
u_int32_t group,
|
u_int32_t group,
|
||||||
int add_leave)
|
int add_leave)
|
||||||
@ -121,7 +123,8 @@ int if_group (struct interface *ifp,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int if_add_group (struct interface *ifp)
|
static int
|
||||||
|
if_add_group (struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi= ifp->info;
|
struct zebra_if *zi= ifp->info;
|
||||||
struct irdp_interface *irdp = &zi->irdp;
|
struct irdp_interface *irdp = &zi->irdp;
|
||||||
@ -133,12 +136,14 @@ int if_add_group (struct interface *ifp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(irdp->flags & IF_DEBUG_MISC )
|
if(irdp->flags & IF_DEBUG_MISC )
|
||||||
zlog_debug("IRDP: Adding group %s for %s\n",
|
zlog_debug("IRDP: Adding group %s for %s",
|
||||||
inet_2a(htonl(INADDR_ALLRTRS_GROUP), b1),
|
inet_2a(htonl(INADDR_ALLRTRS_GROUP), b1),
|
||||||
ifp->name);
|
ifp->name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int if_drop_group (struct interface *ifp)
|
|
||||||
|
static int
|
||||||
|
if_drop_group (struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi= ifp->info;
|
struct zebra_if *zi= ifp->info;
|
||||||
struct irdp_interface *irdp = &zi->irdp;
|
struct irdp_interface *irdp = &zi->irdp;
|
||||||
@ -149,25 +154,13 @@ int if_drop_group (struct interface *ifp)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if(irdp->flags & IF_DEBUG_MISC)
|
if(irdp->flags & IF_DEBUG_MISC)
|
||||||
zlog_debug("IRDP: Leaving group %s for %s\n",
|
zlog_debug("IRDP: Leaving group %s for %s",
|
||||||
inet_2a(htonl(INADDR_ALLRTRS_GROUP), b1),
|
inet_2a(htonl(INADDR_ALLRTRS_GROUP), b1),
|
||||||
ifp->name);
|
ifp->name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct interface *get_iflist_ifp(unsigned int idx)
|
static void
|
||||||
{
|
|
||||||
struct listnode *node;
|
|
||||||
struct interface *ifp;
|
|
||||||
|
|
||||||
LIST_LOOP (iflist, ifp, node)
|
|
||||||
if(ifp->ifindex == idx)
|
|
||||||
return ifp;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
if_set_defaults(struct interface *ifp)
|
if_set_defaults(struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi=ifp->info;
|
struct zebra_if *zi=ifp->info;
|
||||||
@ -180,7 +173,7 @@ if_set_defaults(struct interface *ifp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct Adv *Adv_new ()
|
struct Adv *Adv_new (void)
|
||||||
{
|
{
|
||||||
struct Adv *new;
|
struct Adv *new;
|
||||||
new = XMALLOC (MTYPE_TMP, sizeof (struct Adv));
|
new = XMALLOC (MTYPE_TMP, sizeof (struct Adv));
|
||||||
@ -188,12 +181,14 @@ struct Adv *Adv_new ()
|
|||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adv_free (struct Adv *adv)
|
static void
|
||||||
|
Adv_free (struct Adv *adv)
|
||||||
{
|
{
|
||||||
XFREE (MTYPE_TMP, adv);
|
XFREE (MTYPE_TMP, adv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
static void
|
||||||
|
irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi= ifp->info;
|
struct zebra_if *zi= ifp->info;
|
||||||
struct irdp_interface *irdp = &zi->irdp;
|
struct irdp_interface *irdp = &zi->irdp;
|
||||||
@ -202,7 +197,12 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
|||||||
u_int32_t timer, seed;
|
u_int32_t timer, seed;
|
||||||
|
|
||||||
if (irdp->flags & IF_ACTIVE ) {
|
if (irdp->flags & IF_ACTIVE ) {
|
||||||
zlog_warn("IRDP: Interface is already active %s\n", ifp->name);
|
zlog_warn("IRDP: Interface is already active %s", ifp->name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((irdp_sock < 0) && ((irdp_sock = irdp_sock_init()) < 0)) {
|
||||||
|
zlog_warn("IRDP: Cannot activate interface %s (cannot create "
|
||||||
|
"IRDP socket)", ifp->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
irdp->flags |= IF_ACTIVE;
|
irdp->flags |= IF_ACTIVE;
|
||||||
@ -213,7 +213,7 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
|||||||
if_add_update(ifp);
|
if_add_update(ifp);
|
||||||
|
|
||||||
if (! (ifp->flags & IFF_UP)) {
|
if (! (ifp->flags & IFF_UP)) {
|
||||||
zlog_warn("IRDP: Interface is down %s\n", ifp->name);
|
zlog_warn("IRDP: Interface is down %s", ifp->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Shall we cancel if_start if if_add_group fails? */
|
/* Shall we cancel if_start if if_add_group fails? */
|
||||||
@ -222,7 +222,7 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
|||||||
if_add_group(ifp);
|
if_add_group(ifp);
|
||||||
|
|
||||||
if (! (ifp->flags & (IFF_MULTICAST|IFF_ALLMULTI))) {
|
if (! (ifp->flags & (IFF_MULTICAST|IFF_ALLMULTI))) {
|
||||||
zlog_warn("IRDP: Interface not multicast enabled %s\n", ifp->name);
|
zlog_warn("IRDP: Interface not multicast enabled %s", ifp->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
|||||||
|
|
||||||
|
|
||||||
if(irdp->flags & IF_DEBUG_MISC)
|
if(irdp->flags & IF_DEBUG_MISC)
|
||||||
zlog_debug("IRDP: Init timer for %s set to %u\n",
|
zlog_debug("IRDP: Init timer for %s set to %u",
|
||||||
ifp->name,
|
ifp->name,
|
||||||
timer);
|
timer);
|
||||||
|
|
||||||
@ -266,7 +266,8 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
|
|||||||
timer);
|
timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irdp_if_stop(struct interface *ifp)
|
static void
|
||||||
|
irdp_if_stop(struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi=ifp->info;
|
struct zebra_if *zi=ifp->info;
|
||||||
struct irdp_interface *irdp=&zi->irdp;
|
struct irdp_interface *irdp=&zi->irdp;
|
||||||
@ -277,7 +278,7 @@ void irdp_if_stop(struct interface *ifp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (! (irdp->flags & IF_ACTIVE )) {
|
if (! (irdp->flags & IF_ACTIVE )) {
|
||||||
zlog_warn("Interface is not active %s\n", ifp->name);
|
zlog_warn("Interface is not active %s", ifp->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,13 +294,14 @@ void irdp_if_stop(struct interface *ifp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void irdp_if_shutdown(struct interface *ifp)
|
static void
|
||||||
|
irdp_if_shutdown(struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi= ifp->info;
|
struct zebra_if *zi= ifp->info;
|
||||||
struct irdp_interface *irdp = &zi->irdp;
|
struct irdp_interface *irdp = &zi->irdp;
|
||||||
|
|
||||||
if (irdp->flags & IF_SHUTDOWN ) {
|
if (irdp->flags & IF_SHUTDOWN ) {
|
||||||
zlog_warn("IRDP: Interface is already shutdown %s\n", ifp->name);
|
zlog_warn("IRDP: Interface is already shutdown %s", ifp->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,13 +315,14 @@ void irdp_if_shutdown(struct interface *ifp)
|
|||||||
irdp_advert_off(ifp);
|
irdp_advert_off(ifp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irdp_if_no_shutdown(struct interface *ifp)
|
static void
|
||||||
|
irdp_if_no_shutdown(struct interface *ifp)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi= ifp->info;
|
struct zebra_if *zi= ifp->info;
|
||||||
struct irdp_interface *irdp = &zi->irdp;
|
struct irdp_interface *irdp = &zi->irdp;
|
||||||
|
|
||||||
if (! (irdp->flags & IF_SHUTDOWN )) {
|
if (! (irdp->flags & IF_SHUTDOWN )) {
|
||||||
zlog_warn("IRDP: Interface is not shutdown %s\n", ifp->name);
|
zlog_warn("IRDP: Interface is not shutdown %s", ifp->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -760,7 +763,7 @@ DEFUN (ip_irdp_debug_disable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
irdp_if_init ()
|
irdp_init ()
|
||||||
{
|
{
|
||||||
install_element (INTERFACE_NODE, &ip_irdp_broadcast_cmd);
|
install_element (INTERFACE_NODE, &ip_irdp_broadcast_cmd);
|
||||||
install_element (INTERFACE_NODE, &ip_irdp_multicast_cmd);
|
install_element (INTERFACE_NODE, &ip_irdp_multicast_cmd);
|
||||||
|
@ -77,15 +77,12 @@ int irdp_timer_interval = IRDP_DEFAULT_INTERVAL;
|
|||||||
|
|
||||||
int irdp_read_raw(struct thread *r);
|
int irdp_read_raw(struct thread *r);
|
||||||
int in_cksum (void *ptr, int nbytes);
|
int in_cksum (void *ptr, int nbytes);
|
||||||
extern int irdp_sock;
|
|
||||||
void send_packet(struct interface *ifp,
|
void send_packet(struct interface *ifp,
|
||||||
struct stream *s,
|
struct stream *s,
|
||||||
u_int32_t dst,
|
u_int32_t dst,
|
||||||
struct prefix *p,
|
struct prefix *p,
|
||||||
u_int32_t ttl);
|
u_int32_t ttl);
|
||||||
|
|
||||||
void irdp_if_init ();
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
inet_2a(u_int32_t a, char *b)
|
inet_2a(u_int32_t a, char *b)
|
||||||
{
|
{
|
||||||
@ -102,44 +99,48 @@ irdp_sock_init (void)
|
|||||||
{
|
{
|
||||||
int ret, i;
|
int ret, i;
|
||||||
int save_errno;
|
int save_errno;
|
||||||
|
int sock;
|
||||||
|
|
||||||
if ( zserv_privs.change (ZPRIVS_RAISE) )
|
if ( zserv_privs.change (ZPRIVS_RAISE) )
|
||||||
zlog_err ("irdp_sock_init: could not raise privs, %s",
|
zlog_err ("irdp_sock_init: could not raise privs, %s",
|
||||||
safe_strerror (errno) );
|
safe_strerror (errno) );
|
||||||
|
|
||||||
irdp_sock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
|
sock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
|
||||||
save_errno = errno;
|
save_errno = errno;
|
||||||
|
|
||||||
if ( zserv_privs.change (ZPRIVS_LOWER) )
|
if ( zserv_privs.change (ZPRIVS_LOWER) )
|
||||||
zlog_err ("irdp_sock_init: could not lower privs, %s",
|
zlog_err ("irdp_sock_init: could not lower privs, %s",
|
||||||
safe_strerror (errno) );
|
safe_strerror (errno) );
|
||||||
|
|
||||||
if (irdp_sock < 0) {
|
if (sock < 0) {
|
||||||
zlog_warn ("IRDP: can't create irdp socket %s", safe_strerror(save_errno));
|
zlog_warn ("IRDP: can't create irdp socket %s", safe_strerror(save_errno));
|
||||||
return irdp_sock;
|
return sock;
|
||||||
};
|
};
|
||||||
|
|
||||||
i = 1;
|
i = 1;
|
||||||
ret = setsockopt (irdp_sock, IPPROTO_IP, IP_TTL,
|
ret = setsockopt (sock, IPPROTO_IP, IP_TTL,
|
||||||
(void *) &i, sizeof (i));
|
(void *) &i, sizeof (i));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
zlog_warn ("IRDP: can't do irdp sockopt %s", safe_strerror(errno));
|
zlog_warn ("IRDP: can't do irdp sockopt %s", safe_strerror(errno));
|
||||||
|
close(sock);
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
ret = setsockopt_ifindex (AF_INET, irdp_sock, 1);
|
ret = setsockopt_ifindex (AF_INET, sock, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
zlog_warn ("IRDP: can't do irdp sockopt %s", safe_strerror(errno));
|
zlog_warn ("IRDP: can't do irdp sockopt %s", safe_strerror(errno));
|
||||||
|
close(sock);
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
t_irdp_raw = thread_add_read (zebrad.master, irdp_read_raw, NULL, irdp_sock);
|
t_irdp_raw = thread_add_read (zebrad.master, irdp_read_raw, NULL, sock);
|
||||||
|
|
||||||
return irdp_sock;
|
return sock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int get_pref(struct irdp_interface *irdp, struct prefix *p)
|
static int
|
||||||
|
get_pref(struct irdp_interface *irdp, struct prefix *p)
|
||||||
{
|
{
|
||||||
struct listnode *node;
|
struct listnode *node;
|
||||||
struct Adv *adv;
|
struct Adv *adv;
|
||||||
@ -157,9 +158,10 @@ int get_pref(struct irdp_interface *irdp, struct prefix *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make ICMP Router Advertisement Message. */
|
/* Make ICMP Router Advertisement Message. */
|
||||||
int make_advertisement_packet (struct interface *ifp,
|
static int
|
||||||
struct prefix *p,
|
make_advertisement_packet (struct interface *ifp,
|
||||||
struct stream *s)
|
struct prefix *p,
|
||||||
|
struct stream *s)
|
||||||
{
|
{
|
||||||
struct zebra_if *zi=ifp->info;
|
struct zebra_if *zi=ifp->info;
|
||||||
struct irdp_interface *irdp=&zi->irdp;
|
struct irdp_interface *irdp=&zi->irdp;
|
||||||
@ -191,9 +193,8 @@ int make_advertisement_packet (struct interface *ifp,
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void irdp_send(struct interface *ifp,
|
static void
|
||||||
struct prefix *p,
|
irdp_send(struct interface *ifp, struct prefix *p, struct stream *s)
|
||||||
struct stream *s)
|
|
||||||
{
|
{
|
||||||
struct zebra_if *zi=ifp->info;
|
struct zebra_if *zi=ifp->info;
|
||||||
struct irdp_interface *irdp=&zi->irdp;
|
struct irdp_interface *irdp=&zi->irdp;
|
||||||
@ -218,8 +219,7 @@ void irdp_send(struct interface *ifp,
|
|||||||
send_packet (ifp, s, dst, p, ttl);
|
send_packet (ifp, s, dst, p, ttl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irdp_advertisement (struct interface *ifp,
|
static void irdp_advertisement (struct interface *ifp, struct prefix *p)
|
||||||
struct prefix *p)
|
|
||||||
{
|
{
|
||||||
struct stream *s;
|
struct stream *s;
|
||||||
s = stream_new (128);
|
s = stream_new (128);
|
||||||
@ -345,14 +345,4 @@ void irdp_finish()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void irdp_init()
|
|
||||||
{
|
|
||||||
irdp_sock_init();
|
|
||||||
irdp_if_init ();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_IRDP */
|
#endif /* HAVE_IRDP */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,16 +66,16 @@
|
|||||||
|
|
||||||
/* GLOBAL VARS */
|
/* GLOBAL VARS */
|
||||||
|
|
||||||
int irdp_sock;
|
int irdp_sock = -1;
|
||||||
char b1[16], b2[16], b3[16], b4[16]; /* For inet_2a */
|
char b1[16], b2[16], b3[16], b4[16]; /* For inet_2a */
|
||||||
|
|
||||||
extern struct zebra_t zebrad;
|
extern struct zebra_t zebrad;
|
||||||
extern struct thread *t_irdp_raw;
|
extern struct thread *t_irdp_raw;
|
||||||
extern struct interface *get_iflist_ifp(int idx);
|
|
||||||
int in_cksum (void *ptr, int nbytes);
|
int in_cksum (void *ptr, int nbytes);
|
||||||
void process_solicit (struct interface *ifp);
|
void process_solicit (struct interface *ifp);
|
||||||
|
|
||||||
void parse_irdp_packet(char *p,
|
static void
|
||||||
|
parse_irdp_packet(char *p,
|
||||||
int len,
|
int len,
|
||||||
struct interface *ifp)
|
struct interface *ifp)
|
||||||
{
|
{
|
||||||
@ -187,7 +187,8 @@ void parse_irdp_packet(char *p,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int irdp_recvmsg (int sock, u_char *buf, int size, int *ifindex)
|
static int
|
||||||
|
irdp_recvmsg (int sock, u_char *buf, int size, int *ifindex)
|
||||||
{
|
{
|
||||||
struct msghdr msg;
|
struct msghdr msg;
|
||||||
struct iovec iov;
|
struct iovec iov;
|
||||||
@ -239,7 +240,7 @@ int irdp_read_raw(struct thread *r)
|
|||||||
|
|
||||||
if (ret < 0) zlog_warn ("IRDP: RX Error length = %d", ret);
|
if (ret < 0) zlog_warn ("IRDP: RX Error length = %d", ret);
|
||||||
|
|
||||||
ifp = get_iflist_ifp(ifindex);
|
ifp = if_lookup_by_index(ifindex);
|
||||||
if(! ifp ) return ret;
|
if(! ifp ) return ret;
|
||||||
|
|
||||||
zi= ifp->info;
|
zi= ifp->info;
|
||||||
|
Loading…
Reference in New Issue
Block a user