void connected_up_ipv6 (struct interface *ifp, struct connected *ifc) { struct prefix_ipv6 p; struct prefix_ipv6 *addr; struct prefix_ipv6 *dest; if (! CHECK_FLAG (ifc->conf, ZEBRA_IFC_REAL)) return; addr = (struct prefix_ipv6 *) ifc->address; dest = (struct prefix_ipv6 *) ifc->destination; memset (&p, 0, sizeof (struct prefix_ipv6)); p.family = AF_INET6; p.prefixlen = addr->prefixlen; if (if_is_pointopoint (ifp) && dest) { if (IN6_IS_ADDR_UNSPECIFIED (&dest->prefix)) p.prefix = addr->prefix; else p.prefix = dest->prefix; } else p.prefix = addr->prefix; /* Apply mask to the network. */ apply_mask_ipv6 (&p); #if ! defined (MUSICA) && ! defined (LINUX) /* XXX: It is already done by rib_bogus_ipv6 within rib_add_ipv6 */ if (IN6_IS_ADDR_UNSPECIFIED (&p.prefix)) return; #endif rib_add_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0, ifp->metric, 0); rib_update (); }
/* Dump if address information to vty. */ void connected_dump_vty (struct vty *vty, struct connected *connected) { struct prefix *p; struct interface_FOO *ifp; /* Set interface pointer. */ ifp = connected->ifp; /* Print interface address. */ p = connected->address; vty_out (vty, " %s ", prefix_family_str (p)); prefix_vty_out (vty, p); vty_out (vty, "/%d", p->prefixlen); /* If there is destination address, print it. */ p = connected->destination; if (p) { if (p->family == AF_INET) if (ifp->flags & IFF_BROADCAST) { vty_out (vty, " broadcast "); prefix_vty_out (vty, p); } if (ifp->flags & IFF_POINTOPOINT) { vty_out (vty, " pointopoint "); prefix_vty_out (vty, p); } } if (CHECK_FLAG (connected->flags, ZEBRA_IFA_SECONDARY)) vty_out (vty, " secondary"); if (connected->label) vty_out (vty, " %s", connected->label); vty_out (vty, "%s", VTY_NEWLINE); }
FILE * fetchPutFile(struct url *u, const char *flags) { FILE *f; if (CHECK_FLAG('a')) f = fopen(u->doc, "a"); else f = fopen(u->doc, "w+"); if (f == NULL) fetch_syserr(); if (u->offset && fseeko(f, u->offset, SEEK_SET) == -1) { fclose(f); fetch_syserr(); } fcntl(fileno(f), F_SETFD, FD_CLOEXEC); return (f); }
void ospf_abr_manage_discard_routes (struct ospf *ospf) { listnode node; struct route_node *rn; struct ospf_area *area; struct ospf_area_range *range; for (node = listhead (ospf->areas); node; nextnode (node)) if ((area = node->data) != NULL) for (rn = route_top (area->ranges); rn; rn = route_next (rn)) if ((range = rn->info) != NULL) if (CHECK_FLAG (range->flags, OSPF_AREA_RANGE_ADVERTISE)) { if (range->specifics) ospf_add_discard_route (ospf->new_table, area, (struct prefix_ipv4 *) &rn->p); else ospf_delete_discard_route ((struct prefix_ipv4 *) &rn->p); } }
bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag) { emit messageLogged(QString("Copy file \"%1\" to \"%2\"\n").arg(sourceFile, outputFile)); callback_t callbackData = { this, &abortFlag }; emit statusUpdated(0); const bool success = MUtils::OS::copy_file(sourceFile, outputFile, true, progressCallback, &callbackData); emit statusUpdated(100); if (success) { emit messageLogged(L1S("File copied successfully.")); } else { emit messageLogged(CHECK_FLAG(abortFlag) ? L1S("Operation cancelled by user!") : L1S("Error: Failed to copy file!")); } return success; }
int ospf_db_summary_add (struct ospf_lsa *lsa, void *v, int i) { struct ospf_neighbor *nbr = (struct ospf_neighbor *) v; if (lsa == NULL) return 0; #ifdef HAVE_NSSA /* Stay away from any Local Translated Type-7 LSAs */ if (CHECK_FLAG (lsa->flags, OSPF_LSA_LOCAL_XLT)) return 0; #endif /* HAVE_NSSA */ if (IS_LSA_MAXAGE (lsa)) ospf_ls_retransmit_add (nbr, lsa); else ospf_lsdb_add (&nbr->db_sum, lsa); return 0; }
/* Handle interface addition */ void if_add_update (struct interface *ifp) { zebra_interface_add_update (ifp); if (! CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) { SET_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE); if_addr_wakeup (ifp); if (IS_ZEBRA_DEBUG_KERNEL) zlog_info ("interface %s index %d becomes active.", ifp->name, ifp->ifindex); } else { if (IS_ZEBRA_DEBUG_KERNEL) zlog_info ("interface %s index %d is added.", ifp->name, ifp->ifindex); } }
int bgp_damp_disable (struct bgp *bgp, afi_t afi, safi_t safi) { /* If it wasn't enabled, there's nothing to do. */ if (! CHECK_FLAG (bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING)) return 0; /* Cancel reuse thread. */ if (damp->t_reuse ) thread_cancel (damp->t_reuse); damp->t_reuse = NULL; /* Clean BGP dampening information. */ bgp_damp_info_clean (); /* Clear configuration */ bgp_damp_config_clean (&bgp_damp_cfg); UNSET_FLAG (bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING); return 0; }
CAMLprim value sunml_cvodes_bbd_prec_initb (value vparentwhich, value vlocaln, value vbandwidths, value vdqrely, value vhascomm) { CAMLparam5(vparentwhich, vlocaln, vbandwidths, vdqrely, vhascomm); void *cvode_mem = CVODE_MEM_FROM_ML (Field(vparentwhich, 0)); int flag; flag = CVBBDPrecInitB (cvode_mem, Int_val(Field(vparentwhich, 1)), Long_val(vlocaln), Long_val(Field(vbandwidths, RECORD_CVODE_BANDBLOCK_BANDWIDTHS_MUDQ)), Long_val(Field(vbandwidths, RECORD_CVODE_BANDBLOCK_BANDWIDTHS_MLDQ)), Long_val(Field(vbandwidths, RECORD_CVODE_BANDBLOCK_BANDWIDTHS_MUKEEP)), Long_val(Field(vbandwidths, RECORD_CVODE_BANDBLOCK_BANDWIDTHS_MLKEEP)), Double_val(vdqrely), bbbdlocal, Bool_val(vhascomm) ? bbbdcomm : NULL); CHECK_FLAG ("CVBBDPrecInitB", flag); CAMLreturn (Val_unit); }
static void bgp_dump_packet_func (struct bgp_dump *bgp_dump, struct peer *peer, struct stream *packet) { int ret; struct stream *obuf; /* If dump file pointer is disabled return immediately. */ if (bgp_dump->fp == NULL) return; /* Make dump stream. */ obuf = bgp_dump_obuf; stream_reset (obuf); /* Dump header and common part. */ if (CHECK_FLAG (peer->cap, PEER_CAP_AS4_RCV) ) { bgp_dump_header (obuf, MSG_PROTOCOL_BGP4MP, BGP4MP_MESSAGE_AS4); } else { bgp_dump_header (obuf, MSG_PROTOCOL_BGP4MP, BGP4MP_MESSAGE); } bgp_dump_common (obuf, peer, 0); /* Packet contents. */ stream_put (obuf, STREAM_DATA (packet), stream_get_endp (packet)); /* Set length. */ bgp_dump_set_size (obuf, MSG_PROTOCOL_BGP4MP); /* Write to the stream. */ ret = fwrite (STREAM_DATA (obuf), stream_get_endp (obuf), 1, bgp_dump->fp); if (ret != 1) { zlog_warn ("bgp_dump_packet_func: fwrite returned %d, expected 1: %s", ret, strerror (errno)); } fflush (bgp_dump->fp); }
s32 ws__setBgpGlobalInfo(WS_ENV * ws_env,s32 state,s32 asid, s32 disEBGP,s32 disIBGP,s32 disLOCAL, s32 setType,s8* rtid,s32 ebgpmaxpath,s32 ibgpmaxpath,s8* redis, s32 grconfig, s32 * ret ) { web_bgp_global_info_t info ; if( NULL == rtid || NULL == redis ) return ws_send_soap_error(ws_env,"post data failed !"); info.state = (state&0x00FF) ; info.asid = asid ; info.disEBGP = disEBGP ; info.disIBGP = disIBGP ; info.disLOCAL= disLOCAL; info.settype = setType ; info.ebgpmaxpath = ebgpmaxpath ; info.ibgpmaxpath = ibgpmaxpath ; info.grStaleTime = (grconfig & 0x0FFF ); info.grState = (0!=CHECK_FLAG(grconfig,0x8000)); info.grRestartTime = ((grconfig>>16)&0x0FFF ); inet_aton( rtid, &info.rtid ); strncpy((s8*)info.redis,redis,sizeof(info.redis)); if( socket_api_write(WEB_BGP_APICMD_SET_GLO,&info,sizeof(info)) < 0 ) { socket_api_close(); return ws_send_soap_error(ws_env,"set bgp global config failed !"); } if( state == 0x0001 ) { WEB_SEND_EX_OPERLOG_QUICK(ERROR_SUCCESS,"BGP is enabled , ASID %d.",asid); } if( state == 0x0100 ) { WEB_SEND_EX_OPERLOG_QUICK(ERROR_SUCCESS,"BGP is disabled."); } socket_api_reset(); return WS_OK; }
/* BGP try to connect to the peer. */ int bgp_connect (struct peer *peer) { unsigned int ifindex = 0; /* Make socket for the peer. */ peer->fd = sockunion_socket (&peer->su); if (peer->fd < 0) return -1; /* If we can get socket for the peer, adjest TTL and make connection. */ if (peer_sort (peer) == BGP_PEER_EBGP) sockopt_ttl (peer->su.sa.sa_family, peer->fd, peer->ttl); sockopt_reuseaddr (peer->fd); sockopt_reuseport (peer->fd); /* Bind socket. */ bgp_bind (peer); /* Update source bind. */ bgp_update_source (peer); #ifdef HAVE_IPV6 if (peer->ifname) ifindex = if_nametoindex (peer->ifname); #endif /* HAVE_IPV6 */ if (BGP_DEBUG (events, EVENTS)) plog_info (peer->log, "%s [Event] Connect start to %s fd %d", peer->host, peer->host, peer->fd); #ifdef HAVE_TCP_SIGNATURE if (CHECK_FLAG (peer->flags, PEER_FLAG_PASSWORD)) bgp_tcpsig_set (peer->fd, peer); #endif /* HAVE_TCP_SIGNATURE */ /* Connect to the remote peer. */ return sockunion_connect (peer->fd, &peer->su, htons (peer->port), ifindex); }
/* something went wrong, send notify and tear down */ static int bgp_stop_with_notify (struct peer *peer, u_char code, u_char sub_code) { /* Send notify to remote peer */ bgp_notify_send (peer, code, sub_code); /* Sweep if it is temporary peer. */ if (CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER)) { zlog_info ("%s [Event] Accepting BGP peer is deleted", peer->host); peer_delete (peer); return -1; } /* Clear start timer value to default. */ peer->v_start = BGP_INIT_START_TIMER; /* bgp_stop needs to be invoked while in Established state */ bgp_stop(peer); return 0; }
void connected_down_ipv4 (struct interface *ifp, struct connected *ifc) { struct prefix_ipv4 p; if (! CHECK_FLAG (ifc->conf, ZEBRA_IFC_REAL)) return; PREFIX_COPY_IPV4(&p, CONNECTED_PREFIX(ifc)); /* Apply mask to the network. */ apply_mask_ipv4 (&p); /* In case of connected address is 0.0.0.0/0 we treat it tunnel address. */ if (prefix_ipv4_any (&p)) return; rib_delete_ipv4 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0); rib_update (); }
static int pim_zebra_if_address_del(int command, struct zclient *client, zebra_size_t length, vrf_id_t vrf_id) { struct connected *c; struct prefix *p; /* zebra api notifies address adds/dels events by using the same call interface_add_read below, see comments in lib/zclient.c zebra_interface_address_read(ZEBRA_INTERFACE_ADDRESS_DELETE, ...) will remove address from interface list by calling connected_delete_by_prefix() */ c = zebra_interface_address_read(command, client->ibuf, vrf_id); if (!c) return 0; p = c->address; if (p->family != AF_INET) return 0; if (PIM_DEBUG_ZEBRA) { char buf[BUFSIZ]; prefix2str(p, buf, BUFSIZ); zlog_debug("%s: %s disconnected IP address %s flags %u %s", __PRETTY_FUNCTION__, c->ifp->name, buf, c->flags, CHECK_FLAG(c->flags, ZEBRA_IFA_SECONDARY) ? "secondary" : "primary"); #ifdef PIM_DEBUG_IFADDR_DUMP dump_if_address(c->ifp); #endif } pim_if_addr_del(c, 0); return 0; }
/* Hold timer expire. This is error of BGP connection. So cut the peer and change to Idle status. */ static int bgp_fsm_holdtime_expire (struct peer *peer) { if (BGP_DEBUG (fsm, FSM)) zlog (peer->log, LOG_DEBUG, "%s [FSM] Hold timer expire", peer->host); /* Send notify to remote peer. */ bgp_notify_send (peer, BGP_NOTIFY_HOLD_ERR, 0); /* Sweep if it is temporary peer. */ if (CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER)) { zlog_info ("%s [Event] Accepting BGP peer is deleted", peer->host); peer_delete (peer); return -1; } /* bgp_stop needs to be invoked while in Established state */ bgp_stop(peer); return 0; }
static void dump_if_address(struct interface *ifp) { struct connected *ifc; struct listnode *node; zlog_debug("%s %s: interface %s addresses:", __FILE__, __PRETTY_FUNCTION__, ifp->name); for (ALL_LIST_ELEMENTS_RO(ifp->connected, node, ifc)) { struct prefix *p = ifc->address; if (p->family != AF_INET) continue; zlog_debug("%s %s: interface %s address %s %s", __FILE__, __PRETTY_FUNCTION__, ifp->name, inet_ntoa(p->u.prefix4), CHECK_FLAG(ifc->flags, ZEBRA_IFA_SECONDARY) ? "secondary" : "primary"); } }
FILE * fetchPutFile(struct url *u, const char *flags) { FILE *f; if (CHECK_FLAG('a')) f = fopen(u->doc, "ae"); else f = fopen(u->doc, "w+e"); if (f == NULL) { fetch_syserr(); return (NULL); } if (u->offset && fseeko(f, u->offset, SEEK_SET) == -1) { fclose(f); fetch_syserr(); return (NULL); } return (f); }
static void ospf6_disable(struct ospf6 *o) { struct listnode *node, *nnode; struct ospf6_area *oa; if (!CHECK_FLAG(o->flag, OSPF6_DISABLED)) { SET_FLAG(o->flag, OSPF6_DISABLED); for (ALL_LIST_ELEMENTS(o->area_list, node, nnode, oa)) ospf6_area_disable(oa); /* XXX: This also changes persistent settings */ ospf6_asbr_redistribute_reset(); ospf6_lsdb_remove_all(o->lsdb); ospf6_route_remove_all(o->route_table); ospf6_route_remove_all(o->brouter_table); THREAD_OFF(o->maxage_remover); THREAD_OFF(o->t_spf_calc); THREAD_OFF(o->t_ase_calc); THREAD_OFF(o->t_distribute_update); }
void bgp_damp_info_free (struct bgp_damp_info *bdi, int withdraw) { struct bgp_info *binfo; if (! bdi) return; binfo = bdi->binfo; binfo->extra->damp_info = NULL; if (CHECK_FLAG (binfo->flags, BGP_INFO_DAMPED)) bgp_reuse_list_delete (bdi); else BGP_DAMP_LIST_DEL (damp, bdi); bgp_info_unset_flag (bdi->rn, binfo, BGP_INFO_HISTORY|BGP_INFO_DAMPED); if (bdi->lastrecord == BGP_RECORD_WITHDRAW && withdraw) bgp_info_delete (bdi->rn, binfo); XFREE (MTYPE_BGP_DAMP_INFO, bdi); }
void pim_if_addr_del(struct connected *ifc, int force_prim_as_any) { struct interface *ifp; zassert(ifc); ifp = ifc->ifp; zassert(ifp); /* if (PIM_DEBUG_ZEBRA) */ { char buf[BUFSIZ]; prefix2str(ifc->address, buf, BUFSIZ); zlog_debug("%s: %s ifindex=%d disconnected IP address %s %s", __PRETTY_FUNCTION__, ifp->name, ifp->ifindex, buf, CHECK_FLAG(ifc->flags, ZEBRA_IFA_SECONDARY) ? "secondary" : "primary"); } detect_address_change(ifp, force_prim_as_any, __PRETTY_FUNCTION__); pim_if_addr_del_igmp(ifc); pim_if_addr_del_pim(ifc); }
void connected_up_ipv6(struct interface *ifp, struct connected *ifc) { struct prefix_ipv6 p; if (!CHECK_FLAG(ifc->conf, ZEBRA_IFC_REAL)) return; PREFIX_COPY_IPV6(&p, CONNECTED_PREFIX(ifc)); /* Apply mask to the network. */ apply_mask_ipv6(&p); #ifndef LINUX /* XXX: It is already done by rib_bogus_ipv6 within rib_add_ipv6 */ if (IN6_IS_ADDR_UNSPECIFIED(&p.prefix)) return; #endif rib_add_ipv6(ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, RT_TABLE_MAIN, ifp->metric, 0, SAFI_UNICAST); rib_update(); }
void draw_char(int x, int y, char c, int fg_color, int bg_color, int flags) { int t,s; Uint32 color, mask; union { Uint8 *b; Uint32 *l; } pix, pix2; if((x+current_grp->pos_x) < 0) return; if((x+current_grp->pos_x) > gc->w-8) return; if((y+current_grp->pos_y) < 0) return; if((y+current_grp->pos_y) > gc->h-8) return; /* XXX pointer math */ pix.b = (Uint8 *)(gc->pixels+ ((x+current_grp->pos_x)*gc->format->BytesPerPixel) + ((y+current_grp->pos_y)*gc->pitch)); mask = (gc->format->Rmask | gc->format->Gmask | gc->format->Bmask | gc->format->Amask)^~0; for(t=0;t<8;t++) for(s=0;s<8;s++) { if(((font[ ((c-0x20) * 8)+t]>>(8-s)) &1) == 1) { if(CHECK_FLAG(flags,NO_HASH) == TRUE) color = fg_color; else color = ((t&1)==1 ? fg_color : bg_color); pix2.b = &pix.b[(t * gc->pitch)+(s*gc->format->BytesPerPixel)]; *pix2.l&=mask; *pix2.l|=color; } } }
void connected_down_ipv6 (struct interface *ifp, struct connected *ifc) { struct prefix_ipv6 p; struct prefix_ipv6 *addr; struct prefix_ipv6 *dest; if (! CHECK_FLAG (ifc->conf, ZEBRA_IFC_REAL)) return; addr = (struct prefix_ipv6 *) ifc->address; dest = (struct prefix_ipv6 *) ifc->destination; memset (&p, 0, sizeof (struct prefix_ipv6)); p.family = AF_INET6; p.prefixlen = addr->prefixlen; if (if_is_pointopoint (ifp) && dest) { if (IN6_IS_ADDR_UNSPECIFIED (&dest->prefix)) p.prefix = addr->prefix; else p.prefix = dest->prefix; } else p.prefix = addr->prefix; apply_mask_ipv6 (&p); if (IN6_IS_ADDR_UNSPECIFIED (&p.prefix)) return; rib_delete_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0); rib_update (); }
int bgp_damp_enable (struct bgp *bgp, afi_t afi, safi_t safi, time_t half, unsigned int reuse, unsigned int suppress, time_t max) { if (CHECK_FLAG (bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING)) { if (damp->half_life == half && damp->reuse_limit == reuse && damp->suppress_value == suppress && damp->max_suppress_time == max) return 0; bgp_damp_disable (bgp, afi, safi); } SET_FLAG (bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING); bgp_damp_parameter_set (half, reuse, suppress, max); /* Register reuse timer. */ if (! damp->t_reuse) damp->t_reuse = thread_add_timer (bm->master, bgp_reuse_timer, NULL, DELTA_REUSE); return 0; }
void print_multiboot_mmap(void) { /* Are mmap_* valid? */ if (CHECK_FLAG (mbi->flags, 6)) { memory_map_t *mmap; printk("[ memory map ]\n"); for (mmap = (memory_map_t *) mbi->mmap_addr; (unsigned long) mmap < mbi->mmap_addr + mbi->mmap_length; mmap = (memory_map_t *) ((unsigned long) mmap + mmap->size + sizeof (mmap->size))) printk ("* base_addr = 0x%x%x," " length = 0x%x%x, type = 0x%x\n", (unsigned) mmap->base_addr_high, (unsigned) mmap->base_addr_low, (unsigned) mmap->length_high, (unsigned) mmap->length_low, (unsigned) mmap->type); } // size = 0x%x, //(unsigned) mmap->size, }
void ospf6_abr_enable_area (struct ospf6_area *area) { struct ospf6_area *oa; struct ospf6_route *ro; listnode node; for (node = listhead (area->ospf6->area_list); node; nextnode (node)) { oa = OSPF6_AREA (getdata (node)); /* update B bit for each area */ OSPF6_ROUTER_LSA_SCHEDULE (oa); /* install other area's configured address range */ if (oa != area) { for (ro = ospf6_route_head (oa->range_table); ro; ro = ospf6_route_next (ro)) { if (CHECK_FLAG (ro->flag, OSPF6_ROUTE_ACTIVE_SUMMARY)) ospf6_abr_originate_summary_to_area (ro, area); } } } /* install calculated routes to border routers */ for (ro = ospf6_route_head (area->ospf6->brouter_table); ro; ro = ospf6_route_next (ro)) ospf6_abr_originate_summary_to_area (ro, area); /* install calculated routes to network (may be rejected by ranges) */ for (ro = ospf6_route_head (area->ospf6->route_table); ro; ro = ospf6_route_next (ro)) ospf6_abr_originate_summary_to_area (ro, area); }
/* Called from if_up(). */ void connected_up_ipv4 (struct interface *ifp, struct connected *ifc) { struct prefix_ipv4 p; struct prefix_ipv4 *addr; struct prefix_ipv4 *dest; if (! CHECK_FLAG (ifc->conf, ZEBRA_IFC_REAL)) return; addr = (struct prefix_ipv4 *) ifc->address; dest = (struct prefix_ipv4 *) ifc->destination; memset (&p, 0, sizeof (struct prefix_ipv4)); p.family = AF_INET; p.prefixlen = addr->prefixlen; /* Point-to-point check. */ if (CONNECTED_POINTOPOINT_HOST(ifc)) p.prefix = dest->prefix; else p.prefix = addr->prefix; /* Apply mask to the network. */ apply_mask_ipv4 (&p); /* In case of connected address is 0.0.0.0/0 we treat it tunnel address. */ if (prefix_ipv4_any (&p)) return; rib_add_ipv4 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, RT_TABLE_MAIN, ifp->metric, 0); rib_update (); }
void MainWindow::onTimerTimeout() { if(serialPort) { const QSerialPort::PinoutSignals ps = serialPort->pinoutSignals(); setEditSignalValue(ui->DTRShowEdit, CHECK_FLAG(DataTerminalReadySignal)); setEditSignalValue(ui->DCDShowEdit, CHECK_FLAG(DataCarrierDetectSignal)); setEditSignalValue(ui->DSRShowEdit, CHECK_FLAG(DataSetReadySignal)); setEditSignalValue(ui->RIShowEdit, CHECK_FLAG(RingIndicatorSignal)); setEditSignalValue(ui->RTSShowEdit, CHECK_FLAG(RequestToSendSignal)); setEditSignalValue(ui->CTSShowEdit, CHECK_FLAG(ClearToSendSignal)); } else { setEditSignalValue(ui->DTRShowEdit, -1); setEditSignalValue(ui->DCDShowEdit, -1); setEditSignalValue(ui->DSRShowEdit, -1); setEditSignalValue(ui->RIShowEdit, -1); setEditSignalValue(ui->RTSShowEdit, -1); setEditSignalValue(ui->CTSShowEdit, -1); } }
static int ospf6_zebra_read_ipv6 (int command, struct zclient *zclient, zebra_size_t length) { struct stream *s; struct zapi_ipv6 api; unsigned long ifindex; struct prefix_ipv6 p; struct in6_addr *nexthop; s = zclient->ibuf; ifindex = 0; nexthop = NULL; memset (&api, 0, sizeof (api)); /* Type, flags, message. */ api.type = stream_getc (s); api.flags = stream_getc (s); api.message = stream_getc (s); /* IPv6 prefix. */ memset (&p, 0, sizeof (struct prefix_ipv6)); p.family = AF_INET6; p.prefixlen = stream_getc (s); stream_get (&p.prefix, s, PSIZE (p.prefixlen)); /* Nexthop, ifindex, distance, metric. */ if (CHECK_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP)) { api.nexthop_num = stream_getc (s); nexthop = (struct in6_addr *) malloc (api.nexthop_num * sizeof (struct in6_addr)); stream_get (nexthop, s, api.nexthop_num * sizeof (struct in6_addr)); } if (CHECK_FLAG (api.message, ZAPI_MESSAGE_IFINDEX)) { api.ifindex_num = stream_getc (s); ifindex = stream_getl (s); } if (CHECK_FLAG (api.message, ZAPI_MESSAGE_DISTANCE)) api.distance = stream_getc (s); else api.distance = 0; if (CHECK_FLAG (api.message, ZAPI_MESSAGE_METRIC)) api.metric = stream_getl (s); else api.metric = 0; if (IS_OSPF6_DEBUG_ZEBRA (RECV)) { char prefixstr[128], nexthopstr[128]; prefix2str ((struct prefix *)&p, prefixstr, sizeof (prefixstr)); if (nexthop) inet_ntop (AF_INET6, nexthop, nexthopstr, sizeof (nexthopstr)); else snprintf (nexthopstr, sizeof (nexthopstr), "::"); zlog_debug ("Zebra Receive route %s: %s %s nexthop %s ifindex %ld", (command == ZEBRA_IPV6_ROUTE_ADD ? "add" : "delete"), zebra_route_string(api.type), prefixstr, nexthopstr, ifindex); } if (command == ZEBRA_IPV6_ROUTE_ADD) ospf6_asbr_redistribute_add (api.type, ifindex, (struct prefix *) &p, api.nexthop_num, nexthop); else ospf6_asbr_redistribute_remove (api.type, ifindex, (struct prefix *) &p); if (CHECK_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP)) free (nexthop); return 0; }