18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Licensed under the Academic Free License version 2.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsextern int snmp_printer_info(char *hostname, char *community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **manufacturer, char **model, char **description,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsnetwork_device_name_to_udi(char *udi, size_t size, ...)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs void (*hndlr)(int);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = connect(sd, (struct sockaddr *)&sin6, sizeof (sin6));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs (void) memcpy(&ipv6addr, hp->h_addr_list[0], hp->h_length);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (-1);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic char *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsaddr_to_string(char *prefix, uchar_t *mac, int mac_len, char *buf, int buf_len)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int i, n = 0;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic char *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs hp = getipnodebyname(name, AF_INET6, AI_ADDRCONFIG, &errnum);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&ar.xarp_pa;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct sockaddr_in *sin = (struct sockaddr_in *)&ar.xarp_pa;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (ar.xarp_flags & ATF_COM) { /* use the MAC address */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs addr_to_string("IPV6ADDR-", (uchar_t *)&hp->h_addr_list[0],
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else { /* use the IPv4 address */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct sockaddr_in *sin = (struct sockaddr_in *)&ar.xarp_pa;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs addr_to_string("IPV4ADDR-", (uchar_t *)&sin->sin_addr.s_addr, 4,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsadd_network_printer(LibHalContext *ctx, char *base, char *hostaddr,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *manufacturer = NULL, *model = NULL, *description = NULL,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs network_device_name_to_udi(udi, sizeof (udi), base, serial, NULL);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((tmp_udi = libhal_new_device(ctx, &error)) == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs snmp_printer_info(hostaddr, community, &manufacturer, &model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((community != NULL) && (strcasecmp(community, "public") != 0))
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /* commit the changes to the new UDI */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = libhal_device_commit_to_gdl(ctx, tmp_udi, udi, &error);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs HAL_DEBUG(("result: %s (%s): %s, %s, %s, %s, %s", hostaddr, udi,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs NP(manufacturer), NP(model), NP(description), NP(serial),
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs memset(&n, 0 , sizeof (n));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic char *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs memset(&r, 0, sizeof (r));
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems strlcpy(r.lifr_name, ifname, sizeof (r.lifr_name));
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems if (ioctl(s, SIOCGLIFFLAGS, (caddr_t)&r) < 0) {
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems HAL_DEBUG(("broadcast_address: ioctl(SIOCGLIFFLAGS) failed."));
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems if ((r.lifr_flags & (IFF_UP | IFF_LOOPBACK)) != IFF_UP) {
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems if (ioctl(s, SIOCGLIFBRDADDR, (char *)&r) >= 0) {
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems (struct sockaddr_in *)&r.lifr_broadaddr;
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems result = (char *)inet_ntop(AF_INET,
18c4e255539c8eac2a18c73be8729ec1f6fa818aLin Guo - Sun Microsystems &s->sin_addr, buf, sizeof (buf));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs memset(&c, 0, sizeof (c));