From owner-p4-projects@FreeBSD.ORG Thu Aug 7 01:15:08 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 811A837B404; Thu, 7 Aug 2003 01:15:08 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3090D37B401 for ; Thu, 7 Aug 2003 01:15:08 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0DA0743F93 for ; Thu, 7 Aug 2003 01:15:07 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h778F60U057190 for ; Thu, 7 Aug 2003 01:15:06 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h778F6uT057187 for perforce@freebsd.org; Thu, 7 Aug 2003 01:15:06 -0700 (PDT) Date: Thu, 7 Aug 2003 01:15:06 -0700 (PDT) Message-Id: <200308070815.h778F6uT057187@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 35675 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Aug 2003 08:15:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=35675 Change 35675 by marcel@marcel_nfs on 2003/08/07 01:14:05 IFC @35674 Affected files ... .. //depot/projects/ia64/Makefile#30 integrate .. //depot/projects/ia64/contrib/isc-dhcp/client/dhclient.c#9 integrate .. //depot/projects/ia64/contrib/isc-dhcp/includes/dhcpd.h#7 integrate .. //depot/projects/ia64/etc/defaults/pccard.conf#23 integrate .. //depot/projects/ia64/etc/services#9 integrate .. //depot/projects/ia64/lib/libc/sys/connect.2#6 integrate .. //depot/projects/ia64/lib/libpthread/arch/ia64/ia64/pthread_md.c#2 integrate .. //depot/projects/ia64/lib/libpthread/arch/ia64/include/pthread_md.h#5 integrate .. //depot/projects/ia64/release/Makefile#66 integrate .. //depot/projects/ia64/sbin/ip6fw/ip6fw.c#6 integrate .. //depot/projects/ia64/sbin/mount/mount.c#11 integrate .. //depot/projects/ia64/sbin/mount_hpfs/mount_hpfs.c#4 integrate .. //depot/projects/ia64/sbin/quotacheck/quotacheck.c#11 integrate .. //depot/projects/ia64/sbin/restore/interactive.c#5 integrate .. //depot/projects/ia64/sbin/restore/main.c#8 integrate .. //depot/projects/ia64/sbin/routed/defs.h#2 integrate .. //depot/projects/ia64/sbin/routed/trace.c#3 integrate .. //depot/projects/ia64/share/examples/ppi/ppilcd.c#2 integrate .. //depot/projects/ia64/share/man/man4/acpi.4#12 integrate .. //depot/projects/ia64/sys/cam/scsi/scsi_da.c#48 integrate .. //depot/projects/ia64/sys/compat/svr4/svr4_misc.c#21 integrate .. //depot/projects/ia64/sys/contrib/dev/acpica/acfreebsd.h#11 integrate .. //depot/projects/ia64/sys/contrib/dev/oltr/if_oltr.c#7 integrate .. //depot/projects/ia64/sys/dev/ed/if_ed_cbus.c#7 integrate .. //depot/projects/ia64/sys/dev/en/midway.c#21 integrate .. //depot/projects/ia64/sys/dev/en/midwayvar.h#8 integrate .. //depot/projects/ia64/sys/dev/fatm/if_fatm.c#6 integrate .. //depot/projects/ia64/sys/dev/hatm/if_hatm_ioctl.c#5 integrate .. //depot/projects/ia64/sys/dev/hatm/if_hatm_rx.c#3 integrate .. //depot/projects/ia64/sys/dev/hatm/if_hatm_tx.c#4 integrate .. //depot/projects/ia64/sys/dev/hatm/if_hatmvar.h#4 integrate .. //depot/projects/ia64/sys/dev/ie/if_ievar.h#2 integrate .. //depot/projects/ia64/sys/dev/patm/if_patm_ioctl.c#3 integrate .. //depot/projects/ia64/sys/dev/patm/if_patm_rx.c#3 integrate .. //depot/projects/ia64/sys/dev/patm/if_patm_tx.c#4 integrate .. //depot/projects/ia64/sys/dev/patm/if_patmvar.h#2 integrate .. //depot/projects/ia64/sys/dev/usb/umass.c#31 integrate .. //depot/projects/ia64/sys/fs/specfs/spec_vnops.c#21 integrate .. //depot/projects/ia64/sys/i386/i386/i686_mem.c#8 integrate .. //depot/projects/ia64/sys/i386/i386/identcpu.c#23 integrate .. //depot/projects/ia64/sys/i386/i386/pmap.c#54 integrate .. //depot/projects/ia64/sys/i386/i386/tsc.c#6 integrate .. //depot/projects/ia64/sys/i386/include/clock.h#5 integrate .. //depot/projects/ia64/sys/i386/include/cpufunc.h#15 integrate .. //depot/projects/ia64/sys/i386/isa/clock.c#19 integrate .. //depot/projects/ia64/sys/i386/isa/cxreg.h#2 integrate .. //depot/projects/ia64/sys/ia64/ia64/exception.S#5 integrate .. //depot/projects/ia64/sys/ia64/ia64/machdep.c#87 integrate .. //depot/projects/ia64/sys/ia64/ia64/syscall.S#3 integrate .. //depot/projects/ia64/sys/ia64/ia64/vm_machdep.c#32 integrate .. //depot/projects/ia64/sys/ia64/include/ucontext.h#4 integrate .. //depot/projects/ia64/sys/kern/sys_pipe.c#36 integrate .. //depot/projects/ia64/sys/kern/uipc_syscalls.c#37 integrate .. //depot/projects/ia64/sys/modules/en/Makefile#3 integrate .. //depot/projects/ia64/sys/net/if_atm.h#11 integrate .. //depot/projects/ia64/sys/netinet/if_atm.c#4 integrate .. //depot/projects/ia64/sys/netnatm/natm.c#14 integrate .. //depot/projects/ia64/sys/netnatm/natm.h#4 integrate .. //depot/projects/ia64/sys/netnatm/natm_pcb.c#6 integrate .. //depot/projects/ia64/sys/netnatm/natm_proto.c#8 integrate .. //depot/projects/ia64/sys/pci/if_rl.c#39 integrate .. //depot/projects/ia64/sys/pci/if_rlreg.h#11 integrate .. //depot/projects/ia64/sys/sys/buf.h#24 integrate .. //depot/projects/ia64/sys/sys/pipe.h#6 integrate .. //depot/projects/ia64/sys/vm/default_pager.c#7 integrate .. //depot/projects/ia64/sys/vm/swap_pager.c#38 integrate .. //depot/projects/ia64/sys/vm/swap_pager.h#14 integrate .. //depot/projects/ia64/sys/vm/vm_object.c#64 integrate .. //depot/projects/ia64/sys/vm/vm_pager.h#10 integrate .. //depot/projects/ia64/usr.bin/calendar/calendars/calendar.birthday#9 integrate .. //depot/projects/ia64/usr.sbin/config/config.8#8 integrate .. //depot/projects/ia64/usr.sbin/ctm/mkCTM/mkctm.c#2 integrate Differences ... ==== //depot/projects/ia64/Makefile#30 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile,v 1.286 2003/07/20 12:38:29 ru Exp $ +# $FreeBSD: src/Makefile,v 1.287 2003/08/06 11:06:38 ru Exp $ # # The user-driven targets are: # @@ -105,7 +105,7 @@ # world: upgrade_checks @echo "--------------------------------------------------------------" - @echo ">>> elf make world started on ${STARTTIME}" + @echo ">>> make world started on ${STARTTIME}" @echo "--------------------------------------------------------------" .if target(pre-world) @echo @@ -125,7 +125,8 @@ .endif @echo @echo "--------------------------------------------------------------" - @printf ">>> elf make world completed on `LC_ALL=C date`\n (started ${STARTTIME})\n" + @echo ">>> make world completed on `LC_ALL=C date`" + @echo " (started ${STARTTIME})" @echo "--------------------------------------------------------------" # @@ -198,7 +199,8 @@ .endfor .endfor @echo "--------------------------------------------------------------" - @printf ">>> make universe completed on `LC_ALL=C date`\n (started ${STARTTIME})\n" + @echo ">>> make universe completed on `LC_ALL=C date`" + @echo " (started ${STARTTIME})" @echo "--------------------------------------------------------------" KERNCONFS!= cd ${.CURDIR}/sys/${TARGET}/conf && \ ==== //depot/projects/ia64/contrib/isc-dhcp/client/dhclient.c#9 (text+ko) ==== @@ -42,7 +42,7 @@ #ifndef lint static char ocopyright[] = "$Id: dhclient.c,v 1.129.2.12 2002/11/07 23:26:38 dhankins Exp $ Copyright (c) 1995-2002 Internet Software Consortium. All rights reserved.\n" -"$FreeBSD: src/contrib/isc-dhcp/client/dhclient.c,v 1.27 2003/07/28 13:25:04 mbr Exp $\n"; +"$FreeBSD: src/contrib/isc-dhcp/client/dhclient.c,v 1.29 2003/08/07 07:27:14 mbr Exp $\n"; #endif /* not lint */ #include "dhcpd.h" @@ -217,7 +217,7 @@ } else if (!strcmp (argv [i], "-i")) { if (++i == argc) usage (); - polling_interval = (int)strtol(argv [i], + polling_interval = (int)strtol (argv [i], (char **)NULL, 10); if (polling_interval <= 0) { log_info ("Incorrect polling interval %d", @@ -257,8 +257,11 @@ log_fatal ("%s: interface name too long (max %ld)", argv [i], (long)strlen (argv [i])); strlcpy (tmp -> name, argv [i], IFNAMSIZ); - set_ieee802(tmp); - tmp->linkstatus = interface_active(tmp); +#ifdef __FreeBSD__ + set_ieee80211 (tmp); +#endif + tmp -> forcediscover = 0; + tmp -> linkstate = 0; if (interfaces) { interface_reference (&tmp -> next, interfaces, MDL); @@ -286,16 +289,16 @@ /* first kill of any currently running client */ if (release_mode) { - if ((pidfd = fopen(path_dhclient_pid, "r")) != NULL) { - e = fscanf(pidfd, "%d", &oldpid); + if ((pidfd = fopen (path_dhclient_pid, "r")) != NULL) { + e = fscanf (pidfd, "%d", &oldpid); if (e != 0 && e != EOF) { if (oldpid) { - if (kill(oldpid, SIGKILL) == 0) - unlink(path_dhclient_pid); + if (kill (oldpid, SIGKILL) == 0) + unlink (path_dhclient_pid); } } - fclose(pidfd); + fclose (pidfd); } } @@ -412,7 +415,15 @@ INTERFACE_AUTOMATIC)) != INTERFACE_REQUESTED)) continue; - set_ieee802(ip); +#ifdef __FreeBSD__ + set_ieee80211 (ip); +#endif + ip -> forcediscover = 0; + if (ip -> client -> config -> media != NULL) + ip -> havemedia = 1; + else + ip -> havemedia = 0; + script_init (ip -> client, "PREINIT", (struct string_list *)0); if (ip -> client -> alias) @@ -459,7 +470,7 @@ add_timeout (cur_time + random () % 5, state_link, client, 0, 0); #else - add_timeout(cur_time + random () % 5, + add_timeout (cur_time + random () % 5, state_reboot, client, 0, 0); #endif } @@ -909,6 +920,15 @@ /* Write out the new lease. */ write_client_lease (client, client -> new, 0, 0); + /* + * It's now possible that state_reboot can be called + * after a interface link went down and is up again. + * To prevent tons of equal leases saved on disk, we rewrite + * them. + */ + read_client_leases (); + rewrite_client_leases (); + /* Replace the old active lease with the new one. */ if (client -> active) destroy_client_lease (client -> active); @@ -923,6 +943,10 @@ piaddr (client -> active -> address), (long)(client -> active -> renewal - cur_time)); client -> state = S_BOUND; +#ifdef ENABLE_POLLING_MODE + client -> interface -> linkstate = HAVELINK; + client -> interface -> forcediscover = 0; +#endif /* ifdef ENABLE_POLLING_MODE */ reinitialize_interfaces (); go_daemon (); if (client -> config -> do_forward_update) { @@ -1385,9 +1409,6 @@ int interval; int increase = 1; - if (interface_active(client -> interface) == 0) - return; - /* Figure out how long it's been since we started transmitting. */ interval = cur_time - client -> first_sending; @@ -1427,6 +1448,9 @@ } } + if (interface_active (client -> interface) == NOLINK) + return; + /* If we're supposed to increase the interval, do so. If it's currently zero (i.e., we haven't sent any packets yet), set it to one; otherwise, add to it a random number between @@ -1493,7 +1517,7 @@ struct client_lease *loop; struct client_lease *lp; - if (interface_active(client -> interface) == 0) + if (interface_active (client -> interface) == NOLINK) return; loop = lp = client -> active; @@ -1535,6 +1559,11 @@ log_info ("bound: immediate renewal."); state_bound (client); } + /* + * Set the link status back to nolink, even + * if we have media settings. + */ + client -> interface -> linkstate = NOLINK; reinitialize_interfaces (); go_daemon (); return; @@ -2809,8 +2838,8 @@ break; } client -> state = S_INIT; - if (interface_active(ip)) - state_reboot(client); + if (interface_active (ip) == HAVELINK) + state_reboot (client); } } } @@ -2971,8 +3000,8 @@ client -> state = S_INIT; /* Set up a timeout to start the initialization process. */ - if (interface_active(ip)) { - add_timeout(cur_time + random () % 5, + if (interface_active (ip) == HAVELINK) { + add_timeout (cur_time + random () % 5, state_reboot, client, 0, 0); } } @@ -3038,8 +3067,8 @@ break; case server_awaken: - if (interface_active(ip)) - state_reboot(client); + if (interface_active (ip) == HAVELINK) + state_reboot (client); break; } } @@ -3188,50 +3217,81 @@ ifname = ip -> name; - if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) - log_fatal("Can't create interface_active socket"); + if ((sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) + log_fatal ("Can't create interface_active socket"); - (void) memset(&ifmr, 0, sizeof(ifmr)); - (void) strncpy(ifmr.ifm_name, ifname, sizeof(ifmr.ifm_name)); + (void) memset (&ifmr, 0, sizeof (ifmr)); + (void) strncpy (ifmr.ifm_name, ifname, sizeof (ifmr.ifm_name)); - if (ioctl(sock, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { + if (ioctl (sock, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { /* * Interface doesn't support SIOCGIFMEDIA, presume okay */ - close(sock); - return (1); + close (sock); + return (HAVELINK); } - close(sock); + close (sock); if (ifmr.ifm_count == 0) { /* - * this is unexpected (to me), but we'll just assume - * that this means interface does not support SIOCGIFMEDIA + * Assume that this means interface + * does not support SIOCGIFMEDIA */ - log_fatal("%s: no media types?", ifname); - return (1); + log_fatal ("%s: no media types?", ifname); + return (HAVELINK); } if (ifmr.ifm_status & IFM_AVALID) { - if (ip->ieee802) { + if (ip -> ieee80211) { + /* + * Wavelan devices need to be checked if they are + * associated. + */ if ((IFM_TYPE(ifmr.ifm_active) == IFM_IEEE80211) && - (ifmr.ifm_status & IFM_ACTIVE)) - return (1); + (ifmr.ifm_status & IFM_ACTIVE)) { + if (ip -> havemedia && + ip -> client -> state != S_BOUND) + ip -> forcediscover = 1; + return (HAVELINK); + } } else { - if (ifmr.ifm_status & IFM_ACTIVE) - return (1); + /* + * Media settings can also be possible for normal + * devices. + */ + if (ifmr.ifm_status & IFM_ACTIVE) { + if (ip -> havemedia && + ip -> client -> state != S_BOUND) + ip -> forcediscover = 1; + return (HAVELINK); + } } } - return (0); + /* + * If dhclient.conf contains media settings, we cannot + * abort if the interface is not set to active mode. + */ + if (ip -> havemedia && ip -> client -> state != S_BOUND) + return (HAVELINK); + + /* + * We really have no link. + */ + return (NOLINK); #else /* ifdef __FreeBSD__ */ - return (1); + /* + * Always return a successful link if the OS + * is not supported. + */ + return (HAVELINK); #endif /* Other OSs */ } #ifdef __FreeBSD__ -set_ieee802 (struct interface_info *ip) { +void +set_ieee80211 (struct interface_info *ip) { struct ieee80211req ireq; u_int8_t data[32]; @@ -3242,11 +3302,11 @@ ifname = ip -> name; - if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) - log_fatal("Can't create interface_active socket"); + if ((sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) + log_fatal ("Can't create interface_active socket"); - (void) memset(&ireq, 0, sizeof(ireq)); - (void) strncpy(ireq.i_name, ifname, sizeof(ireq.i_name)); + (void) memset (&ireq, 0, sizeof (ireq)); + (void) strncpy (ireq.i_name, ifname, sizeof (ireq.i_name)); ireq.i_data = &data; ireq.i_type = IEEE80211_IOC_SSID; ireq.i_val = -1; @@ -3254,19 +3314,26 @@ * If we can't get the SSID, * this isn't an 802.11 device. */ - if (ioctl(sock, SIOCG80211, &ireq) < 0) - ip->ieee802 = 0; + if (ioctl (sock, SIOCG80211, &ireq) < 0) + ip -> ieee80211 = 0; else { #ifdef DEBUG - printf("Device %s has 802.11\n", ifname); + printf ("Device %s has 802.11\n", ifname); #endif - ip->ieee802 = 1; + ip -> ieee80211 = 1; } - close(sock); + close (sock); } #endif /* __FreeBSD__ */ #ifdef ENABLE_POLLING_MODE +/* Go to background after some time */ +void state_background (cpp) + void *cpp; +{ + go_daemon (); +} + /* Check the state of the NICs if we have link */ void state_link (cpp) void *cpp; @@ -3275,53 +3342,126 @@ struct client_state *client; #ifdef DEBUG - printf("Polling interface status\n"); + printf ("Polling interface status\n"); #endif for (ip = interfaces; ip; ip = ip -> next) { - if (ip->linkstatus == 0 || doinitcheck == 0) { - if (interface_active(ip)) { + +#ifdef DEBUG + for (client = ip -> client; + client; client = client -> next) { + printf ("%s: client state of %d\n", ip -> name, ip -> client -> state); + printf ("%s: link = %d\n", ip -> name, ip -> linkstate); + } +#endif + + /* + * The last status of the interface tells us + * the we've got no link ... + */ + if (ip -> linkstate == NOLINK || ! doinitcheck) { + /* + * ... but we have now link. Let's send + * requests. + */ + if (interface_active (ip) == HAVELINK) { #ifdef DEBUG - printf("%s: Found Link on interface\n", ip->name); + if (ip -> havemedia) + printf ("%s: Trying media settings on interface\n", + ip -> name); + else + printf ("%s: Found Link on interface\n", ip -> name); #endif + /* + * Set the interface to state_reboot. But of + * course we can not be sure that we really got link, + * we just assume it. + */ for (client = ip -> client; client; client = client -> next) { - add_timeout(cur_time + random () % 5, - state_reboot, client, 0, 0); + cancel_timeout (state_init, client); + cancel_timeout (state_reboot, client); + cancel_timeout (state_selecting, client); + add_timeout (cur_time + random () % 5, + state_reboot, client, 0, 0); } - ip->linkstatus = 1; + ip -> linkstate = HAVELINK; } else { #ifdef DEBUG - printf("%s: No Link on interface\n", ip->name); + printf ("%s: No Link on interface\n", ip -> name); #endif for (client = ip -> client; client; client = client -> next) { - cancel_timeout(state_init, client); - cancel_timeout(send_discover, client); - cancel_timeout(send_request, client); /* - * XXX without this, dhclient does + * Without this add_timout(), dhclient does * not poll on a interface if there * is no cable plugged in at startup - * time + * time. Because we add one additional second + * to the time of a normal timeout, we always + * skip and block a running one. This prevents + * that polling is done twice at the same time. */ if (client -> state == S_INIT) { - add_timeout(cur_time + polling_interval, + add_timeout (cur_time + (polling_interval + 1), state_link, client, 0, 0); } } - ip->linkstatus = 0; + ip -> linkstate = NOLINK; + /* + * Automatically go into the background after + * some time. Do this only if there are no + * media options available for a interface. + */ + if (! ip -> havemedia && ! doinitcheck) { + add_timeout (cur_time + (polling_interval * 2), + state_background, client, 0, 0); + } } - } else { - if (interface_active(ip) == 0) { + } + + /* + * The last status of the interface tells us + * the we previously had link. + */ + if (ip -> linkstate == HAVELINK && doinitcheck) { + if (interface_active (ip) == NOLINK) { + /* + * We lost link on the interface, or it isn't + * associated anymore. + */ #ifdef DEBUG - printf("%s: Lost Link on interface\n", ip->name); + printf ("%s: Lost Link on interface\n", ip -> name); #endif - ip->linkstatus = 0; + /* + * After we lost link, cycle again through the + * different media settings if available. Else + * set NOLINK. + */ + if (ip -> havemedia) + ip -> forcediscover = 1; + else + ip -> linkstate = NOLINK; + } + /* + * If we happen to have a real link, but no + * active lease, force the interface into + * state_reboot. Do the same if media settings + * are available. + */ + if (ip -> forcediscover) { + for (client = ip -> client; + client; client = client -> next) { + if (client -> state != S_REBOOTING && + client -> state != S_SELECTING) { + add_timeout (cur_time + random () % 5, + state_reboot, client, 0, 0); + } + } + ip -> forcediscover = 0; + ip -> linkstate = HAVELINK; } + /* We still have link, do nothing. */ } } - if (doinitcheck) - go_daemon (); doinitcheck = 1; } #endif /* ifdef ENABLE_POLLING_MODE */ ==== //depot/projects/ia64/contrib/isc-dhcp/includes/dhcpd.h#7 (text+ko) ==== @@ -40,7 +40,7 @@ * see ``http://www.vix.com''. To learn more about Nominum, Inc., see * ``http://www.nominum.com''. * - * $FreeBSD: src/contrib/isc-dhcp/includes/dhcpd.h,v 1.3 2003/07/28 11:49:07 mbr Exp $ + * $FreeBSD: src/contrib/isc-dhcp/includes/dhcpd.h,v 1.5 2003/08/07 07:27:14 mbr Exp $ */ #ifndef __CYGWIN32__ @@ -101,6 +101,9 @@ (((x) >> OPTION_HASH_EXP) & \ (OPTION_HASH_PTWO - 1))) % OPTION_HASH_SIZE; +#define NOLINK 0 +#define HAVELINK 1 + enum dhcp_shutdown_state { shutdown_listeners, shutdown_omapi_connections, @@ -780,8 +783,10 @@ unsigned remote_id_len; /* Length of Remote ID. */ char name [IFNAMSIZ]; /* Its name... */ - int linkstatus; /* Link status */ - int ieee802; /* True if media is ieee802 */ + int ieee80211; /* True if media is ieee802.11 */ + int havemedia; /* True if we have a media table */ + int linkstate; /* True if we have link */ + int forcediscover; /* True if a discover is needed */ int index; /* Its index. */ int rfdesc; /* Its read file descriptor. */ int wfdesc; /* Its write file descriptor, if @@ -1859,6 +1864,7 @@ void state_reboot PROTO ((void *)); #ifdef ENABLE_POLLING_MODE void state_link PROTO (()); +void state_background PROTO ((void *)); #endif void state_init PROTO ((void *)); void state_selecting PROTO ((void *)); @@ -1867,6 +1873,11 @@ void state_stop PROTO ((void *)); void state_panic PROTO ((void *)); +#ifdef __FreeBSD__ +void set_ieee80211 PROTO ((struct interface_info *)); +#endif +int interface_active PROTO ((struct interface_info *)); + void bind_lease PROTO ((struct client_state *)); void make_client_options PROTO ((struct client_state *, ==== //depot/projects/ia64/etc/defaults/pccard.conf#23 (text+ko) ==== @@ -1,7 +1,7 @@ # # Default PCCARD configuration file # -# $FreeBSD: src/etc/defaults/pccard.conf,v 1.262 2003/07/22 21:23:01 dds Exp $ +# $FreeBSD: src/etc/defaults/pccard.conf,v 1.263 2003/08/07 04:38:01 imp Exp $ # # Please send new entries for this file to imp@freebsd.org. He likes to # review them before they are committed to make sure they are correct for @@ -205,6 +205,10 @@ card "KODAK Picture Card" "KODAK" config default "ata" ? +# Panasonic KXL-CB10AN (CD-R/RW/DVD) +card "KME" "KXLC006" + config auto "ata" ? + # TOSHIBA Portable 24X Speed CD-ROM Drive PA2673UJ card "LOOKMEET" "/CBIDE2 */" config default "ata" ? @@ -691,6 +695,12 @@ insert /etc/pccard_ether $device start remove /etc/pccard_ether $device stop +# I/O DATA PCET10-CL +card "IO DATA" "PCET10CL" + config auto "ed0" any 0x10 + insert /etc/pccard_ether $device + remove /etc/pccard_ether_remove $device + # I-O DATA PCET/100-CL card "IO DATA" "PCET100CL" config auto "ed" ? 0x80000 @@ -2088,6 +2098,12 @@ insert /etc/pccard_ether $device start remove /etc/pccard_ether $device stop +# Netgear MA701 +card "NETGEAR" "MA701 Wireless CF Card" + config auto "wi" ? + insert /etc/pccard_ether $device start + remove /etc/pccard_ether $device stop + # Nortel eMobility card "Nortel Networks" "emobility 802.11 Wireless LAN PC Card" config auto "wi" ? ==== //depot/projects/ia64/etc/services#9 (text+ko) ==== @@ -16,7 +16,7 @@ # Kerberos services are for Kerberos v4, and are unofficial. Sites running # v5 should uncomment v5 entries and comment v4 entries. # -# $FreeBSD: src/etc/services,v 1.93 2003/05/05 22:10:14 dougb Exp $ +# $FreeBSD: src/etc/services,v 1.94 2003/08/06 18:15:10 dcs Exp $ # From: @(#)services 5.8 (Berkeley) 5/9/91 # # WELL KNOWN PORT NUMBERS @@ -1093,6 +1093,8 @@ ginad 634/udp ldaps 636/tcp sldap #ldap protocol over TLS/SSL ldaps 636/udp sldap +aodv 654/tdp #Ad-Hoc On-Demand Distance Vector Routing Protocol +aodv 654/udp #Ad-Hoc On-Demand Distance Vector Routing Protocol mdqs 666/tcp mdqs 666/udp #PROBLEMS!=============================================== ==== //depot/projects/ia64/lib/libc/sys/connect.2#6 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)connect.2 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libc/sys/connect.2,v 1.24 2003/07/23 22:00:08 dds Exp $ +.\" $FreeBSD: src/lib/libc/sys/connect.2,v 1.25 2003/08/06 14:21:06 yar Exp $ .\" .Dd June 4, 1993 .Dt CONNECT 2 @@ -117,10 +117,13 @@ It is possible to .Xr select 2 for completion by selecting the socket for writing. +.It Bq Er EINTR +The connection attempt was interrupted by the delivery of a signal. +The connection will be established in the background, +as in the case of +.Er EINPROGRESS . .It Bq Er EALREADY -The socket is non-blocking -and a previous connection attempt -has not yet been completed. +A previous connection attempt has not yet been completed. .It Bq Er EACCES An attempt is made to connect to a broadcast address (obtained through the .Dv INADDR_BROADCAST ==== //depot/projects/ia64/lib/libpthread/arch/ia64/ia64/pthread_md.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/arch/ia64/ia64/pthread_md.c,v 1.1 2003/08/05 22:46:00 deischen Exp $ + * $FreeBSD: src/lib/libpthread/arch/ia64/ia64/pthread_md.c,v 1.2 2003/08/06 04:17:42 marcel Exp $ */ #include @@ -41,7 +41,6 @@ if ((tcb = malloc(sizeof(struct tcb))) != NULL) { bzero(tcb, sizeof(struct tcb)); tcb->tcb_thread = thread; - tcb->tcb_tp.tp_self = tcb; /* Allocate TDV */ } return (tcb); @@ -63,7 +62,6 @@ bzero(kcb, sizeof(struct kcb)); kcb->kcb_faketcb.tcb_isfake = 1; kcb->kcb_faketcb.tcb_tmbx.tm_flags = TMF_NOUPCALL; - kcb->kcb_faketcb.tcb_tp.tp_self = &kcb->kcb_faketcb; kcb->kcb_curtcb = &kcb->kcb_faketcb; kcb->kcb_kse = kse; } ==== //depot/projects/ia64/lib/libpthread/arch/ia64/include/pthread_md.h#5 (text+ko) ==== @@ -23,13 +23,14 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/lib/libpthread/arch/ia64/include/pthread_md.h,v 1.6 2003/08/06 00:17:15 marcel Exp $ + * $FreeBSD: src/lib/libpthread/arch/ia64/include/pthread_md.h,v 1.8 2003/08/06 06:12:54 deischen Exp $ */ #ifndef _PTHREAD_MD_H_ #define _PTHREAD_MD_H_ #include +#include #include #define THR_GETCONTEXT(ucp) _ia64_save_context(&(ucp)->uc_mcontext) @@ -53,7 +54,7 @@ */ struct ia64_tp { struct tdv *tp_tdv; /* dynamic TLS */ - struct tcb *tp_self; + uint64_t _reserved_; long double tp_tls[0]; /* static TLS */ }; @@ -74,6 +75,8 @@ register struct ia64_tp *_tp __asm("%r13"); +#define _tcb ((struct tcb*)((char*)(_tp) - offsetof(struct tcb, tcb_tp))) + /* * The kcb and tcb constructors. */ @@ -99,7 +102,7 @@ static __inline struct kcb * _kcb_get(void) { - return (_tp->tp_self->tcb_curkcb); + return (_tcb->tcb_curkcb); } /* @@ -111,22 +114,20 @@ _kcb_critical_enter(void) { struct kse_thr_mailbox *crit; - struct tcb *tcb; uint32_t flags; - tcb = _tp->tp_self; - if (tcb->tcb_isfake != 0) { + if (_tcb->tcb_isfake != 0) { /* * We already are in a critical region since * there is no current thread. */ crit = NULL; } else { - flags = tcb->tcb_tmbx.tm_flags; - tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - crit = tcb->tcb_curkcb->kcb_kmbx.km_curthread; - tcb->tcb_curkcb->kcb_kmbx.km_curthread = NULL; - tcb->tcb_tmbx.tm_flags = flags; + flags = _tcb->tcb_tmbx.tm_flags; + _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; + crit = _tcb->tcb_curkcb->kcb_kmbx.km_curthread; + _tcb->tcb_curkcb->kcb_kmbx.km_curthread = NULL; + _tcb->tcb_tmbx.tm_flags = flags; } return (crit); } @@ -134,33 +135,28 @@ static __inline void _kcb_critical_leave(struct kse_thr_mailbox *crit) { - struct tcb *tcb; - - tcb = _tp->tp_self; /* No need to do anything if this is a fake tcb. */ - if (tcb->tcb_isfake == 0) - tcb->tcb_curkcb->kcb_kmbx.km_curthread = crit; + if (_tcb->tcb_isfake == 0) + _tcb->tcb_curkcb->kcb_kmbx.km_curthread = crit; } static __inline int _kcb_in_critical(void) { - struct tcb *tcb; uint32_t flags; int ret; - tcb = _tp->tp_self; - if (tcb->tcb_isfake != 0) { + if (_tcb->tcb_isfake != 0) { /* * We are in a critical region since there is no * current thread. */ ret = 1; } else { - flags = tcb->tcb_tmbx.tm_flags; - tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - ret = (tcb->tcb_curkcb->kcb_kmbx.km_curthread == NULL); - tcb->tcb_tmbx.tm_flags = flags; + flags = _tcb->tcb_tmbx.tm_flags; + _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; + ret = (_tcb->tcb_curkcb->kcb_kmbx.km_curthread == NULL); + _tcb->tcb_tmbx.tm_flags = flags; } return (ret); } @@ -168,38 +164,34 @@ static __inline void _tcb_set(struct kcb *kcb, struct tcb *tcb) { - if (tcb == NULL) { - kcb->kcb_curtcb = &kcb->kcb_faketcb; - _tp = &kcb->kcb_faketcb.tcb_tp; - } - else { - kcb->kcb_curtcb = tcb; - tcb->tcb_curkcb = kcb; - _tp = &tcb->tcb_tp; - } + if (tcb == NULL) + tcb = &kcb->kcb_faketcb; + kcb->kcb_curtcb = tcb; + tcb->tcb_curkcb = kcb; + _tp = &tcb->tcb_tp; } static __inline struct tcb * _tcb_get(void) { - return (_tp->tp_self); + return (_tcb); } static __inline struct pthread * _get_curthread(void) { - return (_tp->tp_self->tcb_thread); + return (_tcb->tcb_thread); } /* * Get the current kse. * - * Line _kcb_get(), this can only be called while in a critical region. + * Like _kcb_get(), this can only be called while in a critical region. */ static __inline struct kse * _get_curkse(void) { - return (_tp->tp_self->tcb_curkcb->kcb_kse); + return (_tcb->tcb_curkcb->kcb_kse); } void _ia64_enter_uts(kse_func_t uts, struct kse_mailbox *km, void *stack, @@ -226,9 +218,7 @@ static __inline int _thread_switch(struct kcb *kcb, struct tcb *tcb, int setmbox) { - kcb->kcb_curtcb = tcb; - tcb->tcb_curkcb = kcb; - _tp = &tcb->tcb_tp; + _tcb_set(kcb, tcb); if (setmbox != 0) _ia64_restore_context(&tcb->tcb_tmbx.tm_context.uc_mcontext, (intptr_t)&tcb->tcb_tmbx, ==== //depot/projects/ia64/release/Makefile#66 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/release/Makefile,v 1.813 2003/08/05 05:35:56 ache Exp $ +# $FreeBSD: src/release/Makefile,v 1.814 2003/08/06 08:09:40 ru Exp $ # # make release [BUILDNAME=somename] CHROOTDIR=/some/dir CVSROOT=/cvs/dir \ # [RELEASETAG=tag] @@ -255,18 +255,14 @@ DOFS_SH= ${.CURDIR}/scripts/doFS.sh ${DISKLABEL} "" .endif -.if ${TARGET_ARCH} == "sparc64" -CRUNCH_TARGETS= boot -.elif ${TARGET_ARCH} == "ia64" -CRUNCH_TARGETS= boot -.elif ${TARGET} == "pc98" -CRUNCH_TARGETS= boot fixit fixit-small -.elif ${TARGET_ARCH} == "amd64" -CRUNCH_TARGETS= boot +CRUNCH_TARGETS= boot +.if ${TARGET_ARCH} == "i386" +CRUNCH_TARGETS+=fixit +.if ${TARGET} == "pc98" +CRUNCH_TARGETS+=fixit-small +.endif .endif -CRUNCH_TARGETS?=boot fixit - EXTRAS= ftp.1 .if !defined(NOCDROM) EXTRAS+= cdrom.1 @@ -553,19 +549,17 @@ rm -rf ${RD}/crunch mkdir -p ${RD}/crunch .for j in ${CRUNCH_TARGETS} +.if exists(${.CURDIR}/${TARGET}/${j}_crunch.conf) rm -rf ${j}_crunch mkdir ${j}_crunch -.if exists(${.CURDIR}/${TARGET}/${j}_crunch.conf) >>> TRUNCATED FOR MAIL (1000 lines) <<<