\n";
+print &ui_form_start("save_serv.cgi", "post");
+print &ui_hidden("new", $in{'new'});
+print &ui_hidden("idx", $in{'idx'});
+print &ui_table_start($text{'serv_header1'}, "width=100%", 4);
-print " | $text{'serv_id'} | \n";
-printf " | \n",
- $xinet->{'value'};
+# Service name
+print &ui_table_row($text{'serv_id'},
+ &ui_textbox("id", $xinetd->{'value'}, 10));
+# Currently enabled
$id = $q->{'id'}->[0] || $xinet->{'value'};
$dis = $q->{'disable'}->[0] eq 'yes' || $ddisable{$id};
-print "$text{'serv_enabled'} | \n";
-printf " %s\n",
- $dis ? '' : 'checked', $text{'yes'};
-printf " %s | \n",
- $dis ? 'checked' : '', $text{'no'};
+print &ui_table_row($text{'serv_enabled'},
+ &ui_radio("disable", $dis ? 1 : 0,
+ [ [ 0, $text{'yes'} ], [ 1, $text{'no'} ] ]));
-print "$text{'serv_bind'} | \n";
-printf " %s\n",
- $q->{'bind'} ? '' : 'checked', $text{'serv_bind_def'};
-printf "\n",
- $q->{'bind'} ? 'checked' : '';
-printf " | \n",
- $q->{'bind'}->[0];
+# BIND to IP
+print &ui_table_row($text{'serv_bind'},
+ &ui_opt_textbox("bind", $q->{'bind'} ? $q->{'bind'}->[0] : undef,
+ 20, $text{'serv_bind_def'}));
-print "$text{'serv_port'} | \n";
-printf " %s\n",
- $q->{'port'} ? '' : 'checked', $text{'serv_port_def'};
-printf "\n",
- $q->{'port'} ? 'checked' : '';
-printf " | \n",
- $q->{'port'}->[0];
+# Listen on port
+print &ui_table_row($text{'serv_port'},
+ &ui_opt_textbox("port", $q->{'port'} ? $q->{'port'}->[0] : undef,
+ 8, $text{'serv_port_def'}));
-print " | $text{'serv_sock'} | \n";
-print " | \n";
+# Socket type
+print &ui_table_row($text{'serv_sock'},
+ &ui_select("sock", $q->{'socket_type'}->[0],
+ [ map { [ $_, $text{'sock_'.$_} ] }
+ ('stream', 'dgram', 'raw', 'seqpacket') ]));
-print "$text{'serv_proto'} | \n";
-print " | \n";
+# Network protocol
+print &ui_table_row($text{'serv_proto'},
+ &ui_select("proto", $q->{'protocol'}->[0],
+ [ map { [ $_, $text{'proto_'.$_} || uc($_) ] }
+ ('', &list_protocols()) ]));
-print " |