本文整理汇总了C++中IFM_TYPE函数的典型用法代码示例。如果您正苦于以下问题:C++ IFM_TYPE函数的具体用法?C++ IFM_TYPE怎么用?C++ IFM_TYPE使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IFM_TYPE函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: setmedia
static void
setmedia(const char *val, int d, int s, const struct afswtch *afp)
{
struct ifmediareq *ifmr;
int subtype;
ifmr = ifmedia_getstate(s);
/*
* We are primarily concerned with the top-level type.
* However, "current" may be only IFM_NONE, so we just look
* for the top-level type in the first "supported type"
* entry.
*
* (I'm assuming that all supported media types for a given
* interface will be the same top-level type..)
*/
subtype = get_media_subtype(IFM_TYPE(ifmr->ifm_ulist[0]), val);
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
ifr.ifr_media = (ifmr->ifm_current & ~(IFM_NMASK|IFM_TMASK)) |
IFM_TYPE(ifmr->ifm_ulist[0]) | subtype;
if ((ifr.ifr_media & IFM_TMASK) == 0) {
ifr.ifr_media &= ~(IFM_GMASK | IFM_OMASK);
}
ifmr->ifm_current = ifr.ifr_media;
callback_register(setifmediacallback, (void *)ifmr);
}
开发者ID:BlueFireworks,项目名称:rtems-libbsd,代码行数:30,代码来源:ifmedia.c
示例2: qe_ifmedia_upd
/*
* Set media options.
*/
int
qe_ifmedia_upd(struct ifnet *ifp)
{
struct qe_softc *sc = ifp->if_softc;
struct ifmedia *ifm = &sc->sc_ifmedia;
bus_space_tag_t t = sc->sc_bustag;
bus_space_handle_t mr = sc->sc_mr;
int newmedia = ifm->ifm_media;
uint8_t plscc, phycc;
#if defined(SUN4U) || defined(__GNUC__)
(void)&t;
#endif
if (IFM_TYPE(newmedia) != IFM_ETHER)
return (EINVAL);
plscc = bus_space_read_1(t, mr, QE_MRI_PLSCC) & ~QE_MR_PLSCC_PORTMASK;
phycc = bus_space_read_1(t, mr, QE_MRI_PHYCC) & ~QE_MR_PHYCC_ASEL;
if (IFM_SUBTYPE(newmedia) == IFM_AUTO)
phycc |= QE_MR_PHYCC_ASEL;
else if (IFM_SUBTYPE(newmedia) == IFM_10_T)
plscc |= QE_MR_PLSCC_TP;
else if (IFM_SUBTYPE(newmedia) == IFM_10_5)
plscc |= QE_MR_PLSCC_AUI;
bus_space_write_1(t, mr, QE_MRI_PLSCC, plscc);
bus_space_write_1(t, mr, QE_MRI_PHYCC, phycc);
return (0);
}
开发者ID:ryo,项目名称:netbsd-src,代码行数:34,代码来源:qe.c
示例3: init_current_media
int
init_current_media(int s, char *ifname)
{
int media_current;
struct ifmediareq ifmr;
(void) memset(&ifmr, 0, sizeof(ifmr));
(void) strlcpy(ifmr.ifm_name, ifname, sizeof(ifmr.ifm_name));
if (ioctl(s, SIOCGIFMEDIA, (caddr_t) & ifmr) < 0) {
/*
* If we get E2BIG, the kernel is telling us
* that there are more, so we can ignore it.
*/
if (errno != E2BIG)
return(-1);
}
media_current = ifmr.ifm_current;
/* Sanity. */
if (IFM_TYPE(media_current) == 0) {
printf("%% init_current_media: %s: no link type?\n", ifname);
return(-1);
}
return(media_current);
}
开发者ID:muhammadn,项目名称:nsh,代码行数:27,代码来源:media.c
示例4: rtems_ifmedia2str
int
rtems_ifmedia2str (int media, char *buf, int bufsz)
{
const char *mdesc;
const char *dupdesc = 0;
/* only ethernet supported, so far */
if (IFM_ETHER != IFM_TYPE (media))
return -1;
if (!(mdesc = find_desc (IFM_SUBTYPE (media), shared_media_strings)))
mdesc = find_desc (IFM_SUBTYPE (media), ethern_media_strings);
if (!mdesc)
return -1;
if (IFM_NONE != IFM_SUBTYPE (media))
dupdesc = IFM_FDX & media ? " full-duplex" : " half-duplex";
return WHATPRINT (buf, bufsz,
"Ethernet [phy instance: %" PRId32 "]: (link %s, autoneg %s) -- media: %s%s",
(int32_t) IFM_INST (media),
IFM_LINK_OK & media ? "ok" : "down",
IFM_ANEG_DIS & media ? "off" : "on",
mdesc, dupdesc ? dupdesc : "");
}
开发者ID:jfpmonteiro,项目名称:rtems-4.8-rhealstone,代码行数:26,代码来源:rtems_mii_ioctl.c
示例5: tr_pcmcia_mediachange
static int
tr_pcmcia_mediachange(struct tr_softc *sc)
{
int setspeed = 0;
if (IFM_TYPE(sc->sc_media.ifm_media) != IFM_TOKEN)
return EINVAL;
switch (IFM_SUBTYPE(sc->sc_media.ifm_media)) {
case IFM_TOK_STP16:
case IFM_TOK_UTP16:
if ((sc->sc_init_status & RSP_16) == 0)
setspeed = 1;
break;
case IFM_TOK_STP4:
case IFM_TOK_UTP4:
if ((sc->sc_init_status & RSP_16) != 0)
setspeed = 1;
break;
}
if (setspeed != 0) {
tr_stop(sc);
if (sc->sc_enabled)
tr_pcmcia_disable(sc);
sc->sc_init_status ^= RSP_16; /* XXX 100 Mbit/s */
if (sc->sc_enabled)
tr_pcmcia_enable(sc);
}
/*
* XXX Handle Early Token Release !!!!
*/
return 0;
}
开发者ID:ryo,项目名称:netbsd-src,代码行数:34,代码来源:if_tr_pcmcia.c
示例6: s_wireless_nic
static bool
s_wireless_nic (const char* name)
{
int sock = 0;
bool result = FALSE;
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
return FALSE;
#if defined (SIOCGIFMEDIA)
struct ifmediareq ifmr;
memset (&ifmr, 0, sizeof (struct ifmediareq));
strncpy(ifmr.ifm_name, name, sizeof (ifmr.ifm_name));
int res = ioctl (sock, SIOCGIFMEDIA, (caddr_t) &ifmr);
if (res != -1)
result = (IFM_TYPE (ifmr.ifm_current) == IFM_IEEE80211);
#elif defined (SIOCGIWNAME)
struct iwreq wrq;
memset (&wrq, 0, sizeof (struct iwreq));
strncpy (wrq.ifr_name, name, sizeof (wrq.ifr_name));
int res = ioctl (sock, SIOCGIWNAME, (caddr_t) &wrq);
if (res != -1)
result = TRUE;
#endif
close (sock);
return result;
}
开发者ID:Aluminus,项目名称:zyre,代码行数:29,代码来源:zre_udp.c
示例7: set_port_media
static void
set_port_media(struct cfg *cfg, char *argv[])
{
etherswitch_port_t p;
int ifm_ulist[IFMEDIAREQ_NULISTENTRIES];
int subtype;
bzero(&p, sizeof(p));
p.es_port = cfg->unit;
p.es_ifmr.ifm_ulist = ifm_ulist;
p.es_ifmr.ifm_count = IFMEDIAREQ_NULISTENTRIES;
if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0)
err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)");
subtype = get_media_subtype(IFM_TYPE(ifm_ulist[0]), argv[1]);
p.es_ifr.ifr_media = (p.es_ifmr.ifm_current & IFM_IMASK) |
IFM_TYPE(ifm_ulist[0]) | subtype;
if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0)
err(EX_OSERR, "ioctl(IOETHERSWITCHSETPORT)");
}
开发者ID:AhmadTux,项目名称:freebsd,代码行数:19,代码来源:etherswitchcfg.c
示例8:
static struct ifmedia_description *get_toptype_desc(int ifmw)
{
struct ifmedia_description *desc;
for (desc = ifm_type_descriptions; desc->ifmt_string != NULL; desc++)
if (IFM_TYPE(ifmw) == desc->ifmt_word)
break;
return desc;
}
开发者ID:BlueFireworks,项目名称:rtems-libbsd,代码行数:10,代码来源:ifmedia.c
示例9: memset
bool NetworkInterface::isWireless()
{
struct ifmediareq ifm;
memset(&ifm, 0, sizeof(struct ifmediareq));
strncpy(ifm.ifm_name, name.toLocal8Bit(), IFNAMSIZ);
int s = socket(AF_INET, SOCK_DGRAM, 0);
ioctl(s, SIOCGIFMEDIA, &ifm);
return IFM_TYPE(ifm.ifm_active) == IFM_IEEE80211;
}
开发者ID:trueos,项目名称:trueos-utils-qt5,代码行数:12,代码来源:netif.cpp
示例10: get_media_type_string
const char *
get_media_type_string(uint64_t mword)
{
const struct ifmedia_description *desc;
for (desc = ifm_type_descriptions; desc->ifmt_string != NULL;
desc++) {
if (IFM_TYPE(mword) == desc->ifmt_word)
return (desc->ifmt_string);
}
return ("<unknown type>");
}
开发者ID:muhammadn,项目名称:nsh,代码行数:12,代码来源:media.c
示例11: ixl_if_media_change
/*********************************************************************
*
* Media Ioctl callback
*
* This routine is called when the user changes speed/duplex using
* media/mediopt option with ifconfig.
*
**********************************************************************/
int
ixl_if_media_change(if_ctx_t ctx)
{
struct ifmedia *ifm = iflib_get_media(ctx);
INIT_DEBUGOUT("ixl_media_change: begin");
if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER)
return (EINVAL);
if_printf(iflib_get_ifp(ctx), "Media change is currently not supported.\n");
return (ENODEV);
}
开发者ID:outbackdingo,项目名称:uBSD,代码行数:21,代码来源:if_ixl_common.c
示例12: intmediaopt
int
intmediaopt(char *ifname, int ifs, int argc, char **argv)
{
int set, media_current, mediaopt;
if (NO_ARG(argv[0])) {
set = 0;
argc--;
argv++;
} else
set = 1;
argv++;
argc--;
if ((set && (argc != 1)) || (!set && (argc > 1))) {
printf("%% mediaopt <option>\n");
printf("%% no mediaopt [option]\n");
return(0);
}
media_current = init_current_media(ifs, ifname);
if (media_current == -1) {
if (errno == EINVAL)
printf("%% This device does not support "
"media commands.\n");
else
printf("%% Failed to initialize media: %s\n",
strerror(errno));
return(0);
}
if (argc == 1)
mediaopt = get_media_options(IFM_TYPE(media_current), argv[0]);
else
mediaopt = IFM_OPTIONS(media_current);
if (mediaopt == -1)
return(0);
if (set)
media_current |= mediaopt;
else
media_current &= ~mediaopt;
process_media_commands(ifs, ifname, media_current);
return(0);
}
开发者ID:muhammadn,项目名称:nsh,代码行数:50,代码来源:media.c
示例13: sln_media_upd
static int
sln_media_upd(struct ifnet *ifp)
{
struct sln_softc *sc = ifp->if_softc;
struct ifmedia *ifm = &sc->ifmedia;
if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER)
return EINVAL;
if (ifp->if_flags & IFF_UP)
sln_init(sc);
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:14,代码来源:if_sln.c
示例14: media_supported
void
media_supported(int s, char *ifname, char *hdr_delim, char *body_delim)
{
u_int64_t *media_list;
int i, type, printed_type;
struct ifmediareq ifmr;
memset(&ifmr, 0, sizeof(ifmr));
strlcpy(ifmr.ifm_name, ifname, sizeof(ifmr.ifm_name));
if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) {
if (errno != ENOTTY)
printf("%% media_supported: 1/SIOCGIFMEDIA: %s\n",
strerror(errno));
return;
}
media_list = calloc(ifmr.ifm_count, sizeof(*media_list));
if (media_list == NULL) {
printf("%% media_status: calloc: %s\n", strerror(errno));
return;
}
ifmr.ifm_ulist = media_list;
if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) {
printf("%% media_supported: 2/SIOCGIFMEDIA: %s\n",
strerror(errno));
return;
}
for (type = IFM_NMIN; type <= IFM_NMAX; type += IFM_NMIN) {
for (i = 0, printed_type = 0; i < ifmr.ifm_count; i++) {
if (IFM_TYPE(media_list[i]) == type) {
if (printed_type == 0) {
printf("%sSupported media types on %s:\n",
hdr_delim, ifname);
printed_type = 1;
}
printf("%s", body_delim);
print_media_word(media_list[i], 0, 1);
printf("\n");
}
}
}
free(media_list);
return;
}
开发者ID:muhammadn,项目名称:nsh,代码行数:48,代码来源:media.c
示例15: setmediamode
static void
setmediamode(const char *val, int d, int s, const struct afswtch *afp)
{
struct ifmediareq *ifmr;
int mode;
ifmr = ifmedia_getstate(s);
mode = get_media_mode(IFM_TYPE(ifmr->ifm_ulist[0]), val);
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
ifr.ifr_media = (ifmr->ifm_current & ~IFM_MMASK) | mode;
ifmr->ifm_current = ifr.ifr_media;
callback_register(setifmediacallback, (void *)ifmr);
}
开发者ID:BlueFireworks,项目名称:rtems-libbsd,代码行数:16,代码来源:ifmedia.c
示例16: isVPNInterfaceWifi
static Boolean
isVPNInterfaceWifi (struct service *serv)
{
u_int32_t media;
char *interface_buf = getVPNInterfaceBuf(serv);
if (interface_buf && interface_buf[0]) {
media = get_if_media(interface_buf);
} else {
media = 0;
}
if (IFM_TYPE(media) == IFM_IEEE80211) {
return true;
}
return false;
}
开发者ID:TARRANUM,项目名称:ppp,代码行数:16,代码来源:net_location.c
示例17: connection_active
int
connection_active(char *if_name, int if_type) {
/*
* Returns 1 if the network status on the interface is active.
* if_type: 0 for ethernet, 1 for ieee80211
*/
struct ifmediareq ifmr;
const struct ifmedia_status_description *ifms;
static const int ifm_status_valid_list[] = IFM_STATUS_VALID_LIST;
static const struct ifmedia_status_description ifm_status_descriptions[] = IFM_STATUS_DESCRIPTIONS;
int bit = 0, s = -1, res;
s = open_socket(AF_INET);
if (s < 0) {
printf("error opening socket: %s\n", strerror(errno));
}
memset(&ifmr, 0, sizeof(ifmr));
strlcpy(ifmr.ifm_name, if_name, sizeof(ifmr.ifm_name));
res = ioctl(s, SIOCGIFMEDIA, (caddr_t) & ifmr);
close(s);
if (res) {
printf("res: %d (%s)\n", res, strerror(errno));
return 0;
}
if (if_type) {
/* ieee80211 check */
if (IFM_ACTIVE) {
printf("connection_active: ieee80211 network is active\n");
return 1;
}
printf("connection_active: ieee80211 failed check\n");
return 0;
} else {
/* ethernet check */
for (ifms = ifm_status_descriptions; ifms->ifms_valid != 0; ifms++) {
if (ifms->ifms_type == IFM_TYPE(ifmr.ifm_current))
if (strcmp(IFM_STATUS_DESC(ifms, ifmr.ifm_status), "active") == 0) {
printf("connection_active: ethernet network is active\n");
return 1;
} else {
printf("connection_active: ethernet failed check\n");
return 0;
}
}
}
}
开发者ID:myauie,项目名称:wlan-daemon,代码行数:47,代码来源:main.c
示例18: if_vimaster
/*
* FreeBSD allows for Virtual Access Points
* We need to check if the interface is a Virtual Interface Master
* and if so, don't use it.
* This check is made by virtue of being a IEEE80211 device but
* returning the SSID gives an error.
*/
int
if_vimaster(const char *ifname)
{
struct ifmediareq ifmr;
memset(&ifmr, 0, sizeof(ifmr));
strlcpy(ifmr.ifm_name, ifname, sizeof(ifmr.ifm_name));
if (ioctl(socket_afnet, SIOCGIFMEDIA, &ifmr) == -1)
return -1;
if (ifmr.ifm_status & IFM_AVALID &&
IFM_TYPE(ifmr.ifm_active) == IFM_IEEE80211)
{
if (getifssid(ifname, NULL) == -1)
return 1;
}
return 0;
}
开发者ID:RTEMS,项目名称:rtems-libbsd,代码行数:24,代码来源:if-bsd.c
示例19: le_pci_mediachange
static int
le_pci_mediachange(struct lance_softc *sc)
{
struct ifmedia *ifm = &sc->sc_media;
uint16_t reg;
if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER)
return (EINVAL);
if (IFM_SUBTYPE(ifm->ifm_media) == IFM_HPNA_1)
le_pci_wrbcr(sc, LE_BCR49,
(le_pci_rdbcr(sc, LE_BCR49) & ~LE_B49_PHYSEL) | 0x1);
else if (IFM_SUBTYPE(ifm->ifm_media) == IFM_AUTO)
le_pci_wrbcr(sc, LE_BCR2,
le_pci_rdbcr(sc, LE_BCR2) | LE_B2_ASEL);
else {
le_pci_wrbcr(sc, LE_BCR2,
le_pci_rdbcr(sc, LE_BCR2) & ~LE_B2_ASEL);
reg = le_pci_rdcsr(sc, LE_CSR15);
reg &= ~LE_C15_PORTSEL(LE_PORTSEL_MASK);
if (IFM_SUBTYPE(ifm->ifm_media) == IFM_10_T)
reg |= LE_C15_PORTSEL(LE_PORTSEL_10T);
else
reg |= LE_C15_PORTSEL(LE_PORTSEL_AUI);
le_pci_wrcsr(sc, LE_CSR15, reg);
}
reg = le_pci_rdbcr(sc, LE_BCR9);
if (IFM_OPTIONS(ifm->ifm_media) & IFM_FDX) {
reg |= LE_B9_FDEN;
/*
* Allow FDX on AUI only if explicitly chosen,
* not in autoselect mode.
*/
if (IFM_SUBTYPE(ifm->ifm_media) == IFM_10_5)
reg |= LE_B9_AUIFD;
else
reg &= ~LE_B9_AUIFD;
} else
reg &= ~LE_B9_FDEN;
le_pci_wrbcr(sc, LE_BCR9, reg);
return (0);
}
开发者ID:AmirAbrams,项目名称:haiku,代码行数:45,代码来源:if_le_pci.c
示例20: if_vimaster
/*
* FreeBSD allows for Virtual Access Points
* We need to check if the interface is a Virtual Interface Master
* and if so, don't use it.
* This check is made by virtue of being a IEEE80211 device but
* returning the SSID gives an error.
*/
int
if_vimaster(const char *ifname)
{
int s, r;
struct ifmediareq ifmr;
if ((s = socket(PF_INET, SOCK_DGRAM, 0)) == -1)
return -1;
memset(&ifmr, 0, sizeof(ifmr));
strlcpy(ifmr.ifm_name, ifname, sizeof(ifmr.ifm_name));
r = ioctl(s, SIOCGIFMEDIA, &ifmr);
close(s);
if (r == -1)
return -1;
if (ifmr.ifm_status & IFM_AVALID &&
IFM_TYPE(ifmr.ifm_active) == IFM_IEEE80211)
{
if (if_getssid1(ifname, NULL) == -1)
return 1;
}
return 0;
}
开发者ID:RsrchBoy,项目名称:dpkg-dhcpcd5,代码行数:29,代码来源:if-bsd.c
注:本文中的IFM_TYPE函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论