diff -up gnome-panel-2.23.2.1/applets/clock/clock.c.ntp gnome-panel-2.23.2.1/applets/clock/clock.c
--- gnome-panel-2.23.2.1/applets/clock/clock.c.ntp	2008-05-19 01:39:51.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/clock.c	2008-05-19 02:31:44.000000000 -0400
@@ -151,6 +151,7 @@ struct _ClockData {
 	GtkWidget *minutes_spin;
 	GtkWidget *seconds_spin;
 	GtkWidget *set_time_button;
+	GtkWidget *ntp_checkbutton;
 
 	GtkListStore *cities_store;
         GtkWidget *cities_section;
@@ -1697,6 +1698,62 @@ update_set_time_button (ClockData *cd)
 	}
 }
 
+static void update_ntp_checkbutton (ClockData *cd);
+
+static void
+set_ntp_callback (ClockData *cd, GError *error)
+{
+	GtkWidget *dialog;
+
+	if (error) {
+                dialog = gtk_message_dialog_new (NULL,
+                                                 0,
+                                                 GTK_MESSAGE_ERROR,
+                                                 GTK_BUTTONS_OK,
+                                                 _("Failed to set Network Time Protocol"));
+
+                gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), error->message);
+                g_signal_connect (dialog, "response",
+                                  G_CALLBACK (gtk_widget_destroy), NULL);
+                gtk_window_present (GTK_WINDOW (dialog));
+
+                g_error_free (error);
+	}
+	else
+		update_ntp_checkbutton (cd);
+}
+
+
+static void
+ntp_toggled (GtkToggleButton *button,
+             gpointer         user_data)
+{
+	ClockData *cd = user_data;
+	gboolean active;
+
+	g_object_get (button, "active", &active, NULL);
+
+	set_using_ntp_async (active, 
+			     GDK_WINDOW_XWINDOW (cd->applet->window), 
+			     (GFunc)set_ntp_callback, cd, NULL);
+}
+
+static void
+update_ntp_checkbutton (ClockData *cd)
+{
+	GtkWidget *timecontrols;
+	gboolean can_use_ntp, using_ntp;
+
+	get_using_ntp (&can_use_ntp, &using_ntp);
+	g_signal_handlers_block_by_func (cd->ntp_checkbutton, ntp_toggled, cd);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cd->ntp_checkbutton), using_ntp);
+	g_signal_handlers_unblock_by_func (cd->ntp_checkbutton, ntp_toggled, cd);
+	timecontrols = glade_xml_get_widget (cd->glade_xml, "timecontrols");
+	gtk_widget_set_sensitive (cd->ntp_checkbutton, can_use_ntp);
+	gtk_widget_set_sensitive (timecontrols, !using_ntp);
+	gtk_widget_set_sensitive (cd->set_time_button, !using_ntp);
+}
+
 static void
 set_time_callback (ClockData *cd, GError *error)
 {
@@ -1854,6 +1911,8 @@ ensure_time_settings_window_is_created (
 	cd->set_time_button = glade_xml_get_widget (cd->glade_xml, "set-time-button");
 	g_signal_connect (cd->set_time_button, "clicked", G_CALLBACK (set_time), cd);
 
+        cd->ntp_checkbutton = glade_xml_get_widget (cd->glade_xml, "ntp_checkbutton");
+	g_signal_connect (cd->ntp_checkbutton, "toggled", G_CALLBACK (ntp_toggled), cd);
 	cancel_button = glade_xml_get_widget (cd->glade_xml, "cancel-set-time-button");
 	g_signal_connect (cancel_button, "clicked", G_CALLBACK (cancel_time_settings), cd);
 
@@ -1867,6 +1926,7 @@ run_time_settings (GtkWidget *unused, Cl
 	fill_time_settings_window (cd);
 
 	update_set_time_button (cd);
+	update_ntp_checkbutton (cd);
 
 	gtk_window_present (GTK_WINDOW (cd->set_time_window));
 
diff -up gnome-panel-2.23.2.1/applets/clock/clock.glade.ntp gnome-panel-2.23.2.1/applets/clock/clock.glade
--- gnome-panel-2.23.2.1/applets/clock/clock.glade.ntp	2008-05-19 00:49:38.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/clock.glade	2008-05-19 02:28:23.000000000 -0400
@@ -489,8 +489,6 @@ South</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
   <property name="focus_on_map">True</property>
   <property name="urgency_hint">False</property>
-  <property name="default_width">400</property>
-  <property name="default_height">500</property>
 
   <child>
     <widget class="GtkVBox" id="vbox25">
@@ -1540,11 +1538,11 @@ South</property>
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="label">gtk-cancel</property>
+	      <property name="label">gtk-close</property>
 	      <property name="use_stock">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
 	      <property name="focus_on_click">True</property>
-	      <property name="response_id">0</property>
+	      <property name="response_id">-7</property>
 	    </widget>
 	  </child>
 
@@ -1632,184 +1630,218 @@ South</property>
 	      </child>
 
 	      <child>
-		<widget class="GtkHBox" id="hbox60">
+		<widget class="GtkVBox" id="vbox37">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
 		  <property name="spacing">12</property>
 
 		  <child>
-		    <widget class="GtkCalendar" id="calendar">
+		    <widget class="GtkCheckButton" id="ntp_checkbutton">
 		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Your computer can synchronize its clock with a remote
+time server using the Network Time Protocol</property>
 		      <property name="can_focus">True</property>
-		      <property name="display_options">GTK_CALENDAR_SHOW_HEADING</property>
+		      <property name="label" translatable="yes">Synchronize time over the _network</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
 		    </packing>
 		  </child>
 
 		  <child>
-		    <widget class="GtkVBox" id="vbox32">
+		    <widget class="GtkHBox" id="timecontrols">
 		      <property name="visible">True</property>
 		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
+		      <property name="spacing">12</property>
 
 		      <child>
-			<widget class="GtkLabel" id="label235">
+			<widget class="GtkCalendar" id="calendar">
 			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Current Time:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			  <property name="width_chars">-1</property>
-			  <property name="single_line_mode">False</property>
-			  <property name="angle">0</property>
+			  <property name="can_focus">True</property>
+			  <property name="display_options">GTK_CALENDAR_SHOW_HEADING</property>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
 			</packing>
 		      </child>
 
 		      <child>
-			<widget class="GtkLabel" id="label236">
+			<widget class="GtkVBox" id="vbox32">
 			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Time:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			  <property name="width_chars">-1</property>
-			  <property name="single_line_mode">False</property>
-			  <property name="angle">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">6</property>
 
-		  <child>
-		    <widget class="GtkVBox" id="vbox33">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
+			  <child>
+			    <widget class="GtkLabel" id="label235">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Current Time:</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
 
-		      <child>
-			<widget class="GtkLabel" id="current_time_label">
-			  <property name="visible">True</property>
-			  <property name="label">23:59:59</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			  <property name="width_chars">-1</property>
-			  <property name="single_line_mode">False</property>
-			  <property name="angle">0</property>
+			  <child>
+			    <widget class="GtkLabel" id="label236">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Time:</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
 			</packing>
 		      </child>
 
 		      <child>
-			<widget class="GtkHBox" id="hbox61">
+			<widget class="GtkVBox" id="vbox33">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
-			  <property name="spacing">0</property>
+			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkSpinButton" id="hours_spin">
+			    <widget class="GtkLabel" id="current_time_label">
 			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="climb_rate">1</property>
-			      <property name="digits">0</property>
-			      <property name="numeric">True</property>
-			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-			      <property name="snap_to_ticks">False</property>
-			      <property name="wrap">True</property>
-			      <property name="adjustment">23 0 23 1 12 12</property>
+			      <property name="label">23:59:59</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
 
 			  <child>
-			    <widget class="GtkSpinButton" id="minutes_spin">
+			    <widget class="GtkHBox" id="hbox61">
 			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="climb_rate">1</property>
-			      <property name="digits">0</property>
-			      <property name="numeric">True</property>
-			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-			      <property name="snap_to_ticks">False</property>
-			      <property name="wrap">True</property>
-			      <property name="adjustment">59 0 59 1 30 30</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
 
-			  <child>
-			    <widget class="GtkSpinButton" id="seconds_spin">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="climb_rate">1</property>
-			      <property name="digits">0</property>
-			      <property name="numeric">True</property>
-			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-			      <property name="snap_to_ticks">False</property>
-			      <property name="wrap">True</property>
-			      <property name="adjustment">59 0 59 1 30 30</property>
+			      <child>
+				<widget class="GtkSpinButton" id="hours_spin">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="climb_rate">1</property>
+				  <property name="digits">0</property>
+				  <property name="numeric">True</property>
+				  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				  <property name="snap_to_ticks">False</property>
+				  <property name="wrap">True</property>
+				  <property name="adjustment">23 0 23 1 12 12</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkSpinButton" id="minutes_spin">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="climb_rate">1</property>
+				  <property name="digits">0</property>
+				  <property name="numeric">True</property>
+				  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				  <property name="snap_to_ticks">False</property>
+				  <property name="wrap">True</property>
+				  <property name="adjustment">59 0 59 1 30 30</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkSpinButton" id="seconds_spin">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="climb_rate">1</property>
+				  <property name="digits">0</property>
+				  <property name="numeric">True</property>
+				  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				  <property name="snap_to_ticks">False</property>
+				  <property name="wrap">True</property>
+				  <property name="adjustment">59 0 59 1 30 30</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
-			      <property name="expand">True</property>
+			      <property name="expand">False</property>
 			      <property name="fill">True</property>
 			    </packing>
 			  </child>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
-			  <property name="expand">False</property>
+			  <property name="expand">True</property>
 			  <property name="fill">True</property>
 			</packing>
 		      </child>
diff -up gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.c.ntp gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.c
--- gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.c.ntp	2008-05-19 00:44:47.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.c	2008-05-19 00:47:13.000000000 -0400
@@ -610,5 +610,90 @@ gnome_clock_applet_mechanism_set_hardwar
         }
         dbus_g_method_return (context);
         return TRUE;
+}
+
+gboolean
+gnome_clock_applet_mechanism_get_using_ntp  (GnomeClockAppletMechanism    *mechanism,
+                                             DBusGMethodInvocation        *context)
+{
+	int exit_status;
+	GError *error = NULL;
+	gboolean can_use_ntp;
+	gboolean is_using_ntp;
+
+	if (g_file_test ("/etc/ntp.conf", G_FILE_TEST_EXISTS)) {
+		can_use_ntp = TRUE;
+		if (!g_spawn_command_line_sync ("/sbin/service ntpd status",
+						NULL, NULL, &exit_status, &error)) {
+			GError *error2;
+			error2 = g_error_new (GNOME_CLOCK_APPLET_MECHANISM_ERROR,
+					      GNOME_CLOCK_APPLET_MECHANISM_ERROR_GENERAL,
+					      "Error spawning /sbin/service: %s", error->message);
+			g_error_free (error);
+			dbus_g_method_return_error (context, error2);
+			g_error_free (error2);
+			return FALSE;
+		}
+		if (exit_status == 0)
+			is_using_ntp = TRUE;
+		else
+			is_using_ntp = FALSE;
+	}
+	else {
+		can_use_ntp = FALSE;
+		is_using_ntp = FALSE;
+	}
+
+        dbus_g_method_return (context, can_use_ntp, is_using_ntp);
+        return TRUE;
+}
+
+gboolean
+gnome_clock_applet_mechanism_set_using_ntp  (GnomeClockAppletMechanism    *mechanism,
+					     gboolean                      using_ntp,
+					     DBusGMethodInvocation        *context)
+{
+	GError *error;
+	int exit_status;
+	char *cmd;
+
+	error = NULL;
 
+	if (!_check_polkit_for_action (mechanism, context, "org.gnome.clockapplet.mechanism.configurentp"))
+		return FALSE;
+
+	cmd = g_strconcat ("/sbin/chkconfig --level 2345 ntpd ", using_ntp ? "on" : "off", NULL);
+	if (!g_spawn_command_line_sync (cmd,
+					NULL, NULL, &exit_status, &error)) {
+		GError *error2;
+		error2 = g_error_new (GNOME_CLOCK_APPLET_MECHANISM_ERROR,
+				      GNOME_CLOCK_APPLET_MECHANISM_ERROR_GENERAL,
+				      "Error spawning /sbin/chkconfig: %s", error->message);
+		g_error_free (error);
+		dbus_g_method_return_error (context, error2);
+		g_error_free (error2);
+		g_free (cmd);
+		return FALSE;
+	}
+
+	g_free (cmd);
+
+	cmd = g_strconcat ("/sbin/service ntpd ", using_ntp ? "restart" : "stop", NULL);
+	if (!g_spawn_command_line_sync (cmd,
+					NULL, NULL, &exit_status, &error)) {
+		GError *error2;
+		error2 = g_error_new (GNOME_CLOCK_APPLET_MECHANISM_ERROR,
+				      GNOME_CLOCK_APPLET_MECHANISM_ERROR_GENERAL,
+				      "Error spawning /sbin/service: %s", error->message);
+		g_error_free (error);
+		dbus_g_method_return_error (context, error2);
+		g_error_free (error2);
+		g_free (cmd);
+		return FALSE;
+	}
+
+	g_free (cmd);
+
+        dbus_g_method_return (context);
+        return TRUE;
 }
diff -up gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.h.ntp gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.h
--- gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.h.ntp	2008-05-19 00:44:38.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.h	2008-05-19 00:45:38.000000000 -0400
@@ -84,6 +84,13 @@ gboolean            gnome_clock_applet_m
                                                                                 gboolean                      using_utc,
                                                                                 DBusGMethodInvocation        *context);
 
+gboolean            gnome_clock_applet_mechanism_get_using_ntp  (GnomeClockAppletMechanism    *mechanism,
+                                                                                DBusGMethodInvocation        *context);
+
+gboolean            gnome_clock_applet_mechanism_set_using_ntp  (GnomeClockAppletMechanism    *mechanism,
+                                                                                gboolean                      using_ntp,
+                                                                                DBusGMethodInvocation        *context);
+
 G_END_DECLS
 
 #endif /* GNOME_CLOCK_APPLET_MECHANISM_H */
diff -up gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.xml.ntp gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.xml
--- gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.xml.ntp	2008-05-19 00:44:31.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/gnome-clock-applet-mechanism.xml	2008-05-19 00:45:45.000000000 -0400
@@ -23,5 +23,14 @@
       <arg name="is_using_utc" direction="in" type="b"/>
     </method>
 
+    <method name="GetUsingNtp">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="can_use_ntp" direction="out" type="b"/>
+      <arg name="is_using_ntp" direction="out" type="b"/>
+    </method>
+    <method name="SetUsingNtp">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="is_using_ntp" direction="in" type="b"/>
+    </method>
   </interface>
 </node>
diff -up gnome-panel-2.23.2.1/applets/clock/org.gnome.clockapplet.mechanism.policy.in.ntp gnome-panel-2.23.2.1/applets/clock/org.gnome.clockapplet.mechanism.policy.in
--- gnome-panel-2.23.2.1/applets/clock/org.gnome.clockapplet.mechanism.policy.in.ntp	2008-05-19 00:48:13.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/org.gnome.clockapplet.mechanism.policy.in	2008-05-19 00:49:15.000000000 -0400
@@ -35,4 +35,13 @@
     </defaults>
   </action>
 
+  <action id="org.gnome.clockapplet.mechanism.configurentp">
+    <_description>Configure network time</_description>
+    <_message>Privileges are required to configure network time.</_message>
+    <defaults>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_self_keep_always</allow_active>
+    </defaults>
+  </action>
+
 </policyconfig>
diff -up gnome-panel-2.23.2.1/applets/clock/set-timezone.c.ntp gnome-panel-2.23.2.1/applets/clock/set-timezone.c
--- gnome-panel-2.23.2.1/applets/clock/set-timezone.c.ntp	2008-05-19 01:09:45.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/set-timezone.c	2008-05-19 02:32:12.000000000 -0400
@@ -226,6 +226,7 @@ typedef struct {
         gchar *call;
 	gint64 time;
 	gchar *filename;
+	gboolean using_ntp;
         guint transient_parent_xid;
 	GFunc callback;
 	gpointer data;
@@ -371,7 +372,7 @@ set_time_async (SetTimeCallbackData *dat
 						      G_TYPE_INVALID,
 						      /* return values: */
 						      G_TYPE_INVALID);
-	else 
+	else if (strcmp (data->call, "SetTimezone") == 0) 
 		dbus_g_proxy_begin_call_with_timeout (proxy, 
 						      "SetTimezone",
 						      set_time_notify,
@@ -382,6 +383,17 @@ set_time_async (SetTimeCallbackData *dat
 						      G_TYPE_INVALID,
 						      /* return values: */
 						      G_TYPE_INVALID);
+	else if (strcmp (data->call, "SetUsingNtp") == 0)
+		dbus_g_proxy_begin_call_with_timeout (proxy, 
+						      "SetUsingNtp",
+						      set_time_notify,
+						      data, free_data,
+						      INT_MAX,
+						      /* parameters: */
+						      G_TYPE_BOOLEAN, data->using_ntp,
+						      G_TYPE_INVALID,
+						      /* return values: */
+						      G_TYPE_INVALID);
 }
 
 void
@@ -435,3 +447,69 @@ set_system_timezone_async (const gchar  
 	set_time_async (data);
 	free_data (data);
 }
+
+void
+get_using_ntp (gboolean *can_use_ntp,
+               gboolean *is_using_ntp)
+{
+	static gboolean can_use_cache = FALSE;
+	static gboolean is_using_cache = FALSE;
+	static time_t   last_refreshed = 0;
+	time_t          now;
+	gboolean cache;
+        DBusGConnection *bus;
+        DBusGProxy      *proxy;
+
+	time (&now);
+	if (ABS (now - last_refreshed) > CACHE_VALIDITY_SEC) {
+		gboolean cd, cu, iu;
+		cd = can_do ("org.gnome.clockapplet.mechanism.configurentp");
+		bus = get_system_bus ();
+		if (bus == NULL)
+			return;
+
+		proxy = dbus_g_proxy_new_for_name (bus,
+						   "org.gnome.ClockApplet.Mechanism",
+						   "/",
+						   "org.gnome.ClockApplet.Mechanism");
+
+		
+		if (dbus_g_proxy_call (proxy,
+			 	       "GetUsingNtp",
+				       NULL,
+				       G_TYPE_INVALID,
+				       G_TYPE_BOOLEAN, &cu,
+				       G_TYPE_BOOLEAN, &iu,
+				       G_TYPE_INVALID)) {
+			can_use_cache = cd && cu;
+			is_using_cache = iu;
+			last_refreshed = now;
+		}
+	}
+
+	*can_use_ntp = can_use_cache;
+	*is_using_ntp = is_using_cache;
+}
+
+void
+set_using_ntp_async (gboolean        using_ntp,
+	             guint           transient_parent_xid,
+	             GFunc           callback, 
+	             gpointer        d, 
+	             GDestroyNotify  notify)
+{
+	SetTimeCallbackData *data;
+
+	data = g_new0 (SetTimeCallbackData, 1);
+	data->ref_count = 1;
+	data->call = "SetUsingNtp";
+	data->time = -1;
+	data->using_ntp = using_ntp;
+        data->transient_parent_xid = transient_parent_xid;
+	data->callback = callback;
+	data->data = d;
+	data->notify = notify;
+
+	set_time_async (data);
+	free_data (data);
+}
diff -up gnome-panel-2.23.2.1/applets/clock/set-timezone-dummy.c.ntp gnome-panel-2.23.2.1/applets/clock/set-timezone-dummy.c
--- gnome-panel-2.23.2.1/applets/clock/set-timezone-dummy.c.ntp	2008-05-19 01:07:25.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/set-timezone-dummy.c	2008-05-19 01:09:35.000000000 -0400
@@ -79,3 +79,36 @@ set_system_timezone_async (const gchar  
 	if (notify)
 		notify (d);
 }
+
+void
+get_using_ntp (gboolean *can_use_ntp,
+               gboolean *is_using_ntp)
+{
+	*can_use_ntp = FALSE;
+	*is_using_ntp = FALSE;
+}
+
+void
+set_using_ntp_async (gboolean        using_ntp,
+                     guint           transient_parent_xid,
+	             GFunc           callback, 
+		     gpointer        d, 
+		     GDestroyNotify  notify)
+{
+	GError *error;
+
+	if (filename == NULL)
+		return;
+
+	if (callback) {
+		error = g_error_new_literal (G_SPAWN_ERROR,
+					     G_SPAWN_ERROR_FAILED,
+					     "NTP setting is not supported");
+		callback (d, error);
+
+		g_error_free (error);
+	}
+
+	if (notify)
+		notify (d);
+}
diff -up gnome-panel-2.23.2.1/applets/clock/set-timezone.h.ntp gnome-panel-2.23.2.1/applets/clock/set-timezone.h
--- gnome-panel-2.23.2.1/applets/clock/set-timezone.h.ntp	2008-05-19 01:07:03.000000000 -0400
+++ gnome-panel-2.23.2.1/applets/clock/set-timezone.h	2008-05-19 01:06:44.000000000 -0400
@@ -39,4 +39,11 @@ void     set_system_timezone_async   (co
                                       gpointer        data,
                                       GDestroyNotify  notify);
 
+void     get_using_ntp               (gboolean       *can_use_ntp,
+                                      gboolean       *is_using_ntp);
+void     set_using_ntp_async         (gboolean        using_ntp,
+                                      guint           transient_parent_xid,
+                                      GFunc           callback,
+                                      gpointer        data,
+                                      GDestroyNotify  notify);
 #endif
