On a daily basis, large scale disruptions require infrastructure managers and railway operators to reschedule their railway timetables together with their rolling stock and crew schedules. This research focuses on timetable rescheduling for passenger train services on a macroscopic level in a railway network. An integer linear programming model is formulated for solving the timetable rescheduling problem, which minimizes the number of cancelled and delayed train services while adhering to infrastructure and rolling stock capacity constraints. The possibility of rerouting train services in order to reduce the number of cancelled and delayed train services is also considered. In addition, all stages of the disruption management process (from the start of the disruption to the time the normal situation is restored) are taken into account. Computational tests of the described model on a heavily used part of the Dutch railway network show that the model is able to find optimal solutions in short computation times. This makes the approach applicable for use in practice.