4
+ DVD support: added a missing 'linux-default' link referring the default virtual
5
computer filesystem, and another one for the router.
6
This doesn't imply any source changes, but we write this entry here so that it
7
is recorded in our 'history'. This is a change against the 0.50.0-pre1 DVD, which
8
we explicitly *DON't* support, because it's a prerelease.
10
+ Moved the Xnest keyboard layout setting support from the host to the guest.
12
+ Added keyboard layout choosing support in Xnest guest sessions, via the new environment
13
variable MARIONNET_KEYBOARD_LAYOUT.
15
+ 'Change working directory' now fails when given a path mounted on a filesystem
16
without sparse file support, as it should
18
+ Now also *directory* names (and not only file names) are checked for the absence
19
of funny characters, in 'Change working directory', 'New project', 'Save As' and
22
+ Hidden the 'work-around the wirefilter problem' menu item
24
+ Routers need an implicit variant, which is always selected if it exists.
26
+ Bugfix: I was using memq in several places, without knowing it compared by identity.
28
+ Minor bugfix: non-existing cow files (i.e. clean-state filesystems) can now be
29
exported as variants without the interface complaining.
31
+ The gateway tap name is now randomly chosen.
33
+ Treeview_defects, Treeview_ifconfig: minor refactoring
35
+ Exam mode: reports importing is now supported also for routers.
37
+ Made the Ethernet socket host bridge name configurable via the new environment
38
variable MARIONNET_BRIDGE. If the variable is not defined the name defaults to
39
"marbre". The `run' make target now executes Marionnet with the bridge name set
40
to `br0'. Jean-Vincent can easily imagine why :-).
42
+ Simple_dialogs, Talking: made question and confirm dialogs unclosable: now the only
43
way to close them is by pushing a button.
45
+ When in exam mode the shell history is now imported as a document at shutdown
46
time, just like the report (this requires the new machine filesystem I've
47
uploaded to marionnettix)
49
+ Bumped version number
51
+ Minor translation changes
53
+ Updated the Ethernet plug icons
55
+ Now the 'marbre' bridge is setup at startup time
56
+ No, not any more :-)
58
+ Minor treeview changes.
60
+ Texts treeview: added HTML support
64
+ Automatically import exam reports into the text treeview
66
+ Added a toggle button or clickable pixmap to ledgrid windows so that they can
69
+ Auto-generated IPv6 addressed: used a shorter and more beautiful default
71
+ Details treeview: moved the `MAC address' column
73
+ User interface: added the file name constraint also to:
76
+ Refactored the related code
78
+ Disabled UML terminal for routers
79
(look for "Change this when debugging the router device" in simulated_network.ml)
81
+- JUST BEFORE THE RELEASE:
82
+ enable the splash screen (marionnet.ml, at the end)
83
+ Autogenerate IP addresses: set the default to false
84
+ Add a link to Marionnet in the UML wiki (most of the projects we mentioned in the article
85
are already there): http://uml.jfdi.org/uml/Wiki.jsp?page=Tools
86
+ bisogna ricordarsi di mettere a zero (cat /dev/zero >> zeros; rm zeros) lo
87
spazio non utilizzato di tutti i filesystems di backend.
88
La cosa � importante per snellire la piattaforma, sia in casi come quello
89
della sala Q203 dell'IUT, sia per un'immagine knoppix un po' pi� snella
90
=> c'� gi� un vecchio script che fa bene questo lavoro (setfs) che devo
91
integrare agli strumenti di lavoro (bob.marionnet.* ?)
92
- About dialog: write our e-mail addresses with domain marionnet.org, as soon as they
94
+- GUI: de-activate the interface controlling unimplemented features
95
- Check that the plug can be used with a guest ``dhclient'' without the UML process crashing.
96
This happened to me on mccarthy when using a new kernel (2.6.22.9) *without*
98
- Be sure that the guest not supporting NAT kernel is not distributed; it's now useless
100
+ Turn on the wirefilter problem workaround thing, but with a long interval
103
+ Router: support a `suggested' variant which is the only used one, if it exists.
105
+ Bugfix (deadlock). To trigger: startup two machines and a switch with a and S1
106
connected by a cable, and then shut down everything *after everything is up*.
107
The thing does not happen without the cable. I suspect it's a deadlock in the
109
+ Solved this and other stuff with some very ugly kludges. Synchronization added as an
110
afterthought is a mess; we knew it. [In Freiburg]
112
+ Worked around a problem with uml_console: it succeeds when sending a 'cad' message to a UML
113
process which has just started; however the UML doesn't die. [In Freiburg]
115
+ Progress bar dialogs: made them unresizable
117
+ Bug: startup two machines and a switch with a and S1 connected by a cable, and then shut down
118
everything *after everything is up*. The thing does not happen without the cable.
119
I suspect it's a deadlock in the new cable logic. [In Freiburg]
120
+ Solved this and other stuff with some very ugly kludges. Synchronization added as an
121
afterthought is a mess; we knew it. [In Freiburg]
123
+ Worked around a problem with uml_console: it succeeds when sending a 'cad' message to a UML
124
process which has just started; however the UML doesn't die. [In Freiburg]
126
+ Progress bar dialogs: made them unresizable
128
+ Show a superimposed state indicator on device icons
129
+ Added the next_simulated_device_state method to simulated device, and updated the
130
internal state when appropriate. The method returns a
131
simulated_device_automaton_state option, using None to mean 'no transition is in
133
+ Use this information in refresh_sketch [J.V.]
135
+ Prevent ``incorrect'' cables from working:
136
+ Essentially done, and in a clean and general way.
137
+ Now I only need the predicate telling whether a device is ``correct''.
140
+ simulation infrastructure
142
- filtering; user-provided IP address
143
- Don't use a bridge??
145
+- Routers: add variant support
146
+ Done, except for the interface
148
+ Done in the filesystem history treeview: states can be exported as variants
149
+ Support variants in the GUI? Is it a good idea?
151
+ Routers: make them work
154
+- Translate the rest of the user interface into French
156
- Gateway and host X server: use a non-hardwired bridge name
157
[Well, by now I'd just say no :-) --L., in Freiburg]
159
+ Added guest swap partition support (thanks to Jean for some information I lacked)
161
+ Guest system: added a nice xfce installation to be run in Xnest sessions
163
+ Per-guest Xnest support
164
+ Some changes in the distribution were needed for this
166
+ Support more than one host X server, for concurrent Marionnet instances.
167
+ Added x.ml to implement what's needed for this
169
+ Experimented with ocaml-gettext
170
+ Found it to be a bit messy; we're gonna use something simpler.
172
+ Gateway: dynamically compute host tap name
174
+ Host X server access control: now it is granted and revoked more selectively, without any
175
need for something ugly and insecure like "xhost +".
177
+ Fixed default values for IPv4 netmask and broadcast address
179
+ Defects: automatic device shutdown at defects update
181
- "Unexpected environment received from dialog": sometimes I get this at exit time.
182
- Do I *still* get it? Maybe not...
184
+ About: move the reference to the University from 'Authors' to 'Thanks'.
186
- Cleanly exit from the main thread (with exit code EXIT_SUCCESS, of course, in case
189
+ mariokit: updated some old support for variants, which had a different rationale
191
+ Implemented filesystem variants
194
+ in filesystem_history
195
- Do it also for routers
197
+ Interface: forbid distribution change for any machine with existing non-clean states
198
+ Done the same also for variants
200
+ Nasty bug fix: for a filesystem foo, $MARIONNET_HOME/filesystems/foo_variants was also
201
considered a filesystem image, even if it is always a directory.
204
+ Hide the 'Image DOT source' tab.
206
+- cloud (2 endpoints; delay and ttl decreased by a random amount in [min, max].
207
+ Fixed the interface code to agree with itself about how endpoints should be
210
+ Defects on by default
211
- Implementation: do it as a further modification to VDE, in a special hublet
212
altering the ttl field in IP packets and dropping the frame if needed
217
+ IPv6: probably netmask and broadcast are not (explicitly) used. Fields should be
218
different (I think that just an 'IPv6 address' with an updated column constraint
220
+ Ask Jean-Vincent about this.
221
- fix constraint predicate for IPv6 address validation
224
+ Marionnet Logo: replace Suse's logo with Mandriva's logo
226
-+ UI: by default the first port to connect should be the one with minimum
228
- [I'm not sure it always works as I want it]
230
+ Let's set on a convention for cable colors (for example red = crossover,
231
blue = straight, green = serial), and stick to it. It would be very useful
232
in the 'Network details' page.
233
If we want to support B/W printing we can choose colors which look "different
234
enough" when printed (e.g. black and light green), or use both color and
236
+ [tentatively: red for cross-over, blue for straight, black for serial. This
237
convention is used in the defects interface]
238
+ Do it for the graph [J.V.]
240
+ Added a 'reboot' functionality for devices.
242
+ Treeview: added whole-row "after update" callback
244
+ UML process: non-graceful startup is now implemented first with uml_mconsole halt, and
245
--if this fails-- with signals. Also hung UMLs should be correctly killed this way.
247
+ Reduced progress bar pusling overhead
249
+ Hublet spawn: get rid of the sleep kludge. This is actually *unsafe*, and can fail with
251
+ The new version is safe and also way faster.
253
+ Killing processes: also UML appears to be resistent to SIGINT in some cases. Always send a
256
+ Parallelized process spawning and termination when possible, within a single device.
258
+ Death monitor: made the unexpected-death callback non-optional named parameters, also
259
for process subclasses and not only for device subclasses
261
+ Death monitor: show a different message on unexpected death, much friendlier and more accurate
262
in the case of cables.
264
+ Saving: add a progress bar
265
+ [No, it's complicated: it should be done in a separate thread, but it would interact
266
with *everything* in the application]
268
+ Cable disconnection: test it. The interface bug doesn't seem limited to the interface
269
+ Quickly fixed with a kludgish work-around in the Glade part...
270
+ ...and a more important fix in can_resume for Ethernet cables: see mariokit.ml
272
+ Cable disconnection: it works, but the interface allows to disconnect a cable more than once.
273
This bug is completely harmless, but ugly. [No, it wasn't harmless --L.]
275
+ LED grids: added the Marionnet icon. Unfortunately it's nontrivial to add it to
278
+ Death monitor: in case of unexpected death we need to poweroff devices at the level
279
of mariokit, and not simply in simulated_network: in order to implement this all
280
devices in simulated_network need to be passed an *unexpected_death_callback* parameter
281
at construction time.
283
+ Remove old defects GUI
284
- I've not removed the logic dealing with XML. I could break something... It's better to
285
leave that alone by now.
287
+ Defects: automatically highlight defective interfaces (and possibly also devices), so that
288
defective parts are readily visible. I think this can make the interface friendlier.
290
+ Options|Autoconfigure IP addresses
292
+ Treeview: don't hide headings when scolling
293
+ Also added horizontal scrolling
295
+ Defects: fix bit flipping probablity
296
+ Also give a warning when the user sets it very high
298
+ Progress bars have a noticeable overhead when they are many. Use only one shared
299
timer instead of one timer per progress bar.
301
+ Startup/Shutdown/Poweroff everything: parallelize.
303
+ Modify a connected cable, changing an endpoint: a new cable is correctly created with
304
refcount 3, but its process is not spawned. Investigate.
306
+ Get rid of all the SIGCHLD indebuggable stuff, and re-implement the death monitor with
309
+ Signals: Look for this in the glibc manual, there's an example which is exactly what
311
-----------------------------------------------------------------------
312
Here's an example of how to use `waitpid' to get the status from all
313
child processes that have terminated, without ever waiting. This
314
function is designed to be a handler for `SIGCHLD', the signal that
315
indicates that at least one child process has terminated.
316
-----------------------------------------------------------------------
318
+ Removed waitpid() calls from everywhere except the new SIGCHLD handler, whose task is
319
to get notified when any child dies; in order to avoid the merged signal 'feature' (see
320
the GNU libc manual) the handler calls waitpid() in a loop.
321
This saves the need to use waitpid() to avoid zombies, and avoids nasty
322
interactions between kill() and waitpid(), or several concurrent waitpid() calls.
323
This kind of debugging is so fun :-).
325
+ Other funny signal problem: system() is implemented with waitpid()... (see umix.ml, in the
326
OCaml sources); hence I have to temporarily block the SIGCHLD handler when using
328
+ Done the same also for run (implemented with Unix.system), as defined in UnixExtra...
330
+ Shutdown everything should have a confirm dialog
332
+ Add "power-off everything"
333
+ ...with a confirm dialog
335
+ Fix this: connecting two interfaces of the same device with a crossover doesn't work
336
(the cable is not added).
338
+ Fixed a nasty bug related to device creation order and defects, in talking.ml. In some cases
339
a cable was instantiated *before* its defects were added to the defects treeview, hence
340
failing when the instantiation procedure looked for the defects.
342
+ Implement defects in the simulated network
343
+ done for everything except machine-router
344
+ done it for machine_or_router
346
+ guest-side network configuration script using boot_parameters
347
- To do: port it to the router
349
+ Network details: automatically save at any caller-level modification
350
+ Network defects: automatically save at any caller-level modification
352
+ Network details: bind to the interface in talking.
358
+ Network details: also marshal/unmarshal the counters used for generating fresh
361
+ Removed old debug prints scattered thru the code
363
+ hostfs support (especially to work around the kernel command line length limitation):
364
from the guest: mount none /.host -t hostfs -o HOSTDIRECTORY
365
+ Recorded the guest name into hostfs; it's useful from the host side.
367
+ boot_parameters script supplied to each guest via hostfs
369
+ Refactor: all GUI code should be able to show a dialog displaying an error
372
+ Added a facility allowing to show a progress bar dialog
374
+ Treeview: add a general-purpose method row_ids_such_that
376
+ Filesystem history: the most recent state of each device is now always
379
+ Build system: added a kludgish Makefile in OCAMLBRICKS, ugly but useful.
381
+ states interface: reimplemented with the new treeview
383
+ Fail immediately if MARIONNET_HOME is not set.
385
+ Fail immediately if the UID is not 0
387
- Support pathnames with spaces
389
+ Some images pathnames should be made relative
390
+ Rationalize image file paths
392
- Remove checkboxes from dynamic menu items
394
- Bug in my ghostification patch: adding a default gateway allows to (implicitly) set a route
395
thru the ghost interface (and the route is impossible to remove later: this is correct).
396
The problem is that the ghost interface name can't be computed from ADDRT ioctl parameters
397
without looking at the current routing tables (conditionally implemented in two different
399
This should not harm users who don't know about all of this stuff, but could be exploited
400
as an unauthorized way to communicate with the host.
403
-+ UI: also show cables endpoint names
405
+ Do it for the main Hardware UI
406
[No, now we show cable names in the network graph. It's even better]
408
+ global communication LEDgrid
409
[No, it's not needed. Single-device LEDgrids are enough.]
411
- In some cases the ".mar" suffix is not appended when saving a file. When?
412
+ I think it doesn't happen any more. I haven't seen this for a long time.
414
+ machine: alter implementation adding one more level of hublets, to be able to implement
419
+ new subtab of 'Materiel', with port detailed configuration
420
[Done, but it's unrelated to defects...]
421
+ new subtab of 'Materiel', with defects for ports and wires
422
(resolution: each direction of each port and cable)
424
- teacher -> students
425
- Allow the user to shutdown machines with halt from within UML without messing up our state
427
- Correct hublet aynchronous initialization without sleeping: it can be done with a datagram
428
socket, just like blinking
429
- Asynchronous startup/shutdown with threads
431
- project GPG signatures
433
- assisted mode / student mode
435
+ UML filesystems: add support for a swap file, dynamically created at startup and destroyed on shutdown
436
+ [No: I tried, but it's problematic: cow files (as it should be expected) become *very* big.
437
And swap files can't be on hostfs or NFS. I don't see any easy solution. --L.]
439
+ Bug in my ghostification patch: another (relatively subtle) case of missing copy_from_user(),
440
in the SIOCADDRT ioctl.
442
+ Bug in my ghostification patch: dhclient fails to add the default gateway:
443
"The user aked to add a route involving the ghost interface . We make this operation fail"
448
+ Bug in my ghostification patch: can't acquire a spinlock in preemptable or SMP kernel
449
without disabling interrupts.
450
Testcase: while true; do dhclient; done
452
+ Too heaviweight locking in my ghostification patch: use rw_spinlocks to allow readers to
453
execute concurrently. The read case is infinitely more common, as only ghostification and
454
unghostification involve writing.
456
+ In some cases saving with a different name with 'Save As' (and 'Copy Into'?) seems to
457
break the states interface. I think the states prefix path needs to be updated.
459
+ Start a machine and *immediately* shut down everything, before tha machine has actually
460
started. The GUI hangs waiting forever that the process terminates, but its termination
461
message hasn't arrived because uml_console just failed, and we didn't notice.
469
+ remove default entries
471
+ Interface: forbid saving when there are machines or routers running
473
+ network element update, keeping identity
475
+ static network graph level
476
+ LEDgrids: destroy and re-create them on update
479
+ more elaborate support for states
481
+ Ghostification patch: now that ugly stacktrace does not appear on startup any more.
482
Also worked around a strange problem with arch/um/os-Linux/sys-i386/registers.c,
483
using some macros like JB_PC, JB_SP and JB_BP -- which apparently should be defined
484
in <bits/setjmp.h>, but aren't.
486
-----------------------------------------------------
492
+ emacs lentissimo a lanciarsi
494
+- vi si comporta in maniera bizzarra con la tastiera ed � inutilizzabile
495
+ (I think this has been solved by upgrading debian packages)
497
- ifconfig eth? <ip>/(8|16|24) d� un messaggio di errore strano
498
- l'interfaccia sembra tuttavia ben configurata
499
- non ho testato ma il sintomo potrebbe verificarsi solo quando il numero di
500
bit accesi del netmask [8/16/24] non corrisponde alla classe convenzionale
501
(per esempio se dico ifconfig eth0 192.168.1.3/8)
503
- /etc/hosts da ripulire (ci sono linee con myrouter)
505
- ping -b .. (broadcast) non funziona
507
+ route add .. eth? provoca un crash del kernel host (senza eth? no)
514
- se marionnet viene lanciata da un terminale e quest'ultimo viene chiuso,
515
l'interfaccia grafica impazzisce e non � pi� utilizzabile
516
=> si potrebbe risolvere utilizzando nohup nel marionnet_starter?
517
+ [Yes, good idea: nohup (plus a small modification I did) solves this. --L.]
518
- Add nohup to marionnet_starter (I don't have a copy)
520
+ mancano crudelmente le barre di progressione per capire che l'applicazione
521
sta lavorando e che non c'� da preoccuparsi
522
=> si sistemer� con il pilota dei processi
524
+ shutdown non parallelo delle macchine virtuali
525
=> si sistemer� anche questo con e nel pilota dei processi
527
+ quando si fa Quitter, poi Annuler, esce ugualmente!
529
- IDEA: per evitare il rischio di terminali bloccati, avviare sin dall'inizio
530
una batteria di terminali per la stessa uml? Utilizzare una konsole con vari
531
tab? Dare la possibilit� nell'interfaccia di lanciare un nuovo terminale su
532
una certa macchina (solo quando in esecuzione)?
534
+ IDEA: mettere da qualche parte ben visibile (titolo della finestra?) il nome
535
del progetto sul quale si lavora
537
+ IDEA: mettere il logo Paris 13 nell'about, dopo i nostri nomi, magari
538
preceduto da una frase tipo "Projet financ� par l'UP13"
540
- IDEA: sarebbe bene un commento o un'etichetta anche per la macchine (come
541
per hub e switch). In questo modo si potrebbe mettere per esempio il numero
542
IP (o uno schema di numero IP come per esempio 192.168.k.7 dove k � un
543
parametro che dipende dallo studente che deve fare l'esame) in modo che
544
appaia chiaramente sullo sketch senza che lo studente abbia bisogno di
545
rileggere l'enunciato del problema posto
547
- IDEA: nella finestra di definizione di una macchina permettere con un
548
pulsantino vicino alla scelta della distribuzione di sfogliare (chiamata
549
ad un qualunque visualizzatore o editor esterno) la lista dei pacchetti
550
installati (output di dpkg -l). Idem per il kernel; in questo caso si potr�
553
+ nelle cose da fare bisogna aggiungere la "dinamicit�" dello sketch
554
(distinguere tra componenti in esecuzione, sospesi, inattivi,..)
556
--------------------------------
557
Riguardo alla piattaforma (host)
558
--------------------------------
560
+ le finestre dei terminali delle macchine virtuali non si sistemano
561
automaticamente nello spazio libero del desktop; al contrario si accumulano
563
=> opzione di lanciamento del terminale o opzione di X?
564
[This should be possible to set *in a global way* if we can configure the
565
window manager. It's doable for networked classrooms and LiveDVD, not
566
for normal user installation --L.]
568
------------------------------------------------------
569
Riguardo alle cose che avrei tanto desiderato testare
570
e che ho dimenticato di testare
571
------------------------------------------------------
573
- controllare che tcpdump sia sincrono e se non lo � cercare di capire per
574
quale ragione non lo � (pi�)
575
+ [Now it appears to be synchronous. We might have "solved" the problem
576
by recompiling the kernel with a different configuration. --L.]
577
- No, I can reproduce the problem again now [--L., September 2007]
579
+ About: thank the artist who drew our logo
581
+ Logo and splash image: blurred Mandriva's logo to make it blend with the painting in a
585
+ set the xterm title at early boot time (added /etc/init.d/marionnet-xterm-title.sh)
586
+ updated the distribution
587
+ compiled Emacs from sources (unicode-2 branch from CVS). This solves the slow boot
590
+ Death monitor: don't popup a warning window per process when a cluster of processes
591
implementing a single device is killed by a callback; just show the one which actually
594
+ Added an automatically generated version.ml
596
- Initialization: check that /tmp is a filesystem suitable to handle cow's;
597
do the same at working-directory change.
599
- Allow to change the working directory
601
- Explain the xterm Ctrk+Button3 trick in the user manual
603
- Xephyr: modify it to be able to set the window title and disable the grab feature.
605
+ newMachine simplified constructor: removed an old use of "X host" as a string,
606
which is now replaced by an agebraic type
608
+ Treeviews: fixed a nasty bug which prevented undumping
610
+ Removed some old debug prints
612
+ Treeviews: forward-compatibility in file dumps (old Marionnets can read new files
613
by simply not using unknown fields, when all row and column constraints are respected)
615
+ Treeviews: backward-compatibility in file dumps (new Marionnets can read old files,
616
providing defaults for new fields not specified in files)
618
+ Treeview: column headers are now internally stored in English, but an
619
internationalized translation may be shown: see the new optional parameter
620
?shown_header in `column' and its subclasses.
622
+ Minor aesthetical changes
624
+ New treeview for texts
625
+ Texts treeview: removed partial copies in case of import error
627
+ Added a quick and easy forest-undumping facility
629
+ Made hublet termination even more paranoidly safe
631
+ UI: Gtk callbacks sometimes raise exceptions when creating cables which
632
can not be connected due to their kind or to port availability:
633
"In callback for signal activate, uncaught exception: Failure("getNodeByName \"\"")"
634
Recipe to reproduce: create a new straight cable in an empty network
636
+ Bugfix: now it's again possible to set a label for straight Ethernet cables
638
+ Bugfix: updated the 'Add cable' menu item sensitivity also on machine edit.
639
Added the method update_add_cable_sensitivity to state, replacing the previous
640
kludge which tied this feature to each sketch update.
642
+ Fixed a pernicious bug involving how router ports should be named (portX rather than
645
- The progress bar dialog 'shutting down machine' also appears for machines which are
646
not running at project close/open.
647
[This is only noticeable when using variants, because of the copying/removing
648
latency. In other cases the window flashes just for a moment, or Gtk doesn't even
649
have the time to draw it before it's destroyed --L.].
651
+ Talking: added some missing calls to st#update_cable_sensitivity
653
+ Bugfix: remove machine: delete all cow's
655
+ Bugfix: correctly save and restore filesystem history
657
+ Talking: now the sketch is refreshed at cable connection/disconnection
659
+ Ledgrid manager: made LEDgrid windows not resizable
661
+ simple_dialogs.ml: Added the fancy ask_text_dialog
663
+ strExtra: trivial generalization of wellFormedName
665
+ Cable treeview icons: updated colors; now they are coherent with the graph
668
+ GUI, talking: added the Marionnet icon to all dialogs which still lacked it.
670
+ Makefile: trivial changes
672
+ Minor cosmetic changes
674
+ Bugfix: filesystem history: ``startup in this state'' did not generate a child in the
675
correct position within the forest.
677
+ Bugfix: when removing a device implies removing some cables, such cables must also be
680
+ Filesystem history: moved the tab to 'Hardware'
682
+ Sketch: added synchronization
684
+ Connected/disconnected cables in the sketch: fixed a buglet
686
+ Filesystem history: implmenent ``Export as variant''
688
+ Filesystem history: minor refactoring
690
+ Translated the Glade part of the user interface into French
692
+ Starting up a network with no computers is now allowed.
694
+ Update the Dot image to show more detailed state (suspended devices, disconnected cables,
695
... [and cable names, I'd say --L.]) [J.V.]
697
+ Implement the new variant semantics:
698
+ (i) if there exists a symlink [or non-symlink file] named `suggested' in the
699
appropriate variant directory, than make the GUI select *that* as the initial
700
entry, when creating a new machine; ['no variant' comes as the second element
701
when 'suggested' exists]
702
(ii) If no such link exists then `no variant' is the initial entry
703
(iii) In any case it must be possible to select `no variant'
704
+ Remove the `default' variant [easy: there was no `default' variant :-)]
705
+ Rename `clean' to 'no variant' (for variants, not filesystem states)
706
+ At machine [and router] creation time use `readlink' to resolve the variant name if
707
it's a symlink, and store the resolved name instead of the link name, for any link
708
+ The constraint on variant read-only-ness at machine update is ok.
710
+ Gateway GUI: made the IP number textboxes non-sensitive
712
+ Treeview: added view-detaching support. Load should be faster.
714
- Document the filesystem name convention: names should contain a never-changing
717
+ Solved more synchronization problems.
719
+ Added a very beautiful message-passing synchronization in
720
wait_for_all_currently_scheduled_tasks. enqueue/dequeue replace both lock/unlock and
721
wait/signal, they're higher level and easy to use.
723
+ Bugfix: "Save as" and "Copy into" did't append the ".mar" extension to the given
726
+ Fixed several concurrency-related problems, including some quite serious ones
727
manifesting at project close time.
729
+ task_runner: added the method wait_for_all_currently_scheduled_tasks .
731
+ Sometimes cables seem to hang using 100% CPU [and, just to be clear, it's most
732
probably due to my own patches to VDE. --L.]. This could be worked around by
733
restarting them every k seconds, with a smallish k like 10. I needed the new
734
more elaborate synchronization support to be able to do this. [in Freiburg]
735
+ Also added a user option to toggle this behavior. [in Freiburg]
737
+ mariokit: added some more needed (and some non-needed, just to play it safe)
738
synchronization in class cable
740
+ Other minor cleanups [in Freiburg]
742
+ ...synchronization: added a recursive mutex implementation. Not optimized (and very
743
defensive for such a low-level thing), but it seems to work. Very delicate stuff,
746
+ Mariokit: other dangerous synchronization changes :-)
748
+ wirefilter processes survive a Marionnet close operation when the project is not closed.
749
[Not any more, I think --L., in Freiburg]
751
+ Mariokit: added some needed synchronization
753
+ Synchronization: bugfix on cable connect/disconnect
755
+ Machine dialog: the default kernel should be 'default', when it exists.
756
+- It's already that way, apparently. Mmm, I think to have observed a different
757
behavior, but I'm not sure.
759
+ Interface: redundant 'Power off' menu entries were hidden, and 'Shutdown' menu
760
entries were relabeled to 'Power off', keeping the 'Stop' stock icon. This was
761
done for: hub, switch, cloud, gateway (i.e. Ethernet plug)
763
+ (Seemingly) easy user interface changes:
764
+ change the default label locations so that both device names *and* interface names
765
are visible in the network graph [J.V.]
766
+ switch icon: the 'off' version is taller than the 'on' version; I don't think it's
767
intentional, as this is not true for either the hub or the router.
768
The switch 'on' icon should be re-cropped. [J.V.]
770
+ Removed the Ethernet cloud and the Ethernet plug from the details interface.
772
+- Removed the correct-crossedness constraint on cables: now the interface allows to
773
add ``incorrect'' cables
774
+ Prevent ``incorrect'' cables from working
775
+ Added all the needed infrastructure, now also in the `network' class in mariokit
776
+ Just used the new method `would_a_cable_be_correct_between' at cable
777
construction time (modification is implemented as destruction + re-construction)
778
- Conditionally restore the old behavior, where the GUI prevents the user from doing
781
+ Constrained project names: they must be ``identifiers''; of course we still
782
accept an explicitly supplied ".mar" extension, and we still silently add it
785
-+ The main process exit code should be 0
786
-+ [No, I tried handling SIGINT and SIGTERM and it worked in many cases, but it's too
787
dangerous: sometimes the interface just hangs and some threads remain alive.
788
As of now I've just slightly cleaned the code but the strategy is essentially the
789
same as before. --L.]
792
+ a just-added tree should be collapsed by default
793
+ all trees are now collpsed at undump time